[WIP] FreeBSD install ok
parent
44a5c31b12
commit
e00313bb36
|
@ -6,6 +6,7 @@
|
||||||
Vagrant.configure("2") do |config|
|
Vagrant.configure("2") do |config|
|
||||||
|
|
||||||
vms = [
|
vms = [
|
||||||
|
[ "freebsd-10.2", "freebsd/FreeBSD-10.2-STABLE" ],
|
||||||
[ "debian-wheezy", "debian/wheezy64" ],
|
[ "debian-wheezy", "debian/wheezy64" ],
|
||||||
[ "debian-jessie", "debian/jessie64" ],
|
[ "debian-jessie", "debian/jessie64" ],
|
||||||
[ "debian-stretch", "sharlak/debian_stretch_64" ]
|
[ "debian-stretch", "sharlak/debian_stretch_64" ]
|
||||||
|
@ -21,11 +22,27 @@ Vagrant.configure("2") do |config|
|
||||||
m.vm.box = vm[1]
|
m.vm.box = vm[1]
|
||||||
m.vm.network "private_network", type: "dhcp"
|
m.vm.network "private_network", type: "dhcp"
|
||||||
|
|
||||||
|
# See: https://forums.freebsd.org/threads/52717/
|
||||||
|
if vm[0] = "freebsd-10.2"
|
||||||
|
m.vm.guest = :freebsd
|
||||||
|
m.vm.synced_folder ".", "/vagrant", id: "vagrant-root", disabled: true
|
||||||
|
m.ssh.shell = "sh"
|
||||||
|
#m.vm.base_mac = "0800278DFFF5"
|
||||||
|
m.vm.base_mac = "080027D14C66"
|
||||||
|
#m.vm.network "public_network", bridge: 'enp4s0', auto_config: false
|
||||||
|
m.vm.provision "shell", inline: "pkg install -y python bash"
|
||||||
|
end
|
||||||
|
|
||||||
m.vm.provision "ansible" do |ansible|
|
m.vm.provision "ansible" do |ansible|
|
||||||
ansible.playbook = "tests/test.yml"
|
ansible.playbook = "tests/test.yml"
|
||||||
ansible.groups = { "test" => [ vm[0] ] }
|
ansible.groups = { "test" => [ vm[0] ] }
|
||||||
ansible.verbose = 'vv'
|
ansible.verbose = 'vv'
|
||||||
ansible.sudo = true
|
ansible.sudo = true
|
||||||
|
if vm[0] = "freebsd-10.2"
|
||||||
|
ansible.extra_vars = {
|
||||||
|
ansible_python_interpreter: '/usr/local/bin/python'
|
||||||
|
}
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -8,7 +8,6 @@ nginx_backports: false
|
||||||
#
|
#
|
||||||
nginx_root: "/srv/www"
|
nginx_root: "/srv/www"
|
||||||
nginx_log_dir: '/var/log/nginx'
|
nginx_log_dir: '/var/log/nginx'
|
||||||
nginx_pid: '/run/nginx.pid'
|
|
||||||
nginx_resolver_hosts: ['8.8.8.8', '8.8.4.4']
|
nginx_resolver_hosts: ['8.8.8.8', '8.8.4.4']
|
||||||
nginx_resolver_valid: '300s'
|
nginx_resolver_valid: '300s'
|
||||||
nginx_resolver_timeout: '5s'
|
nginx_resolver_timeout: '5s'
|
||||||
|
@ -20,9 +19,9 @@ nginx_default_vhost_ssl: null
|
||||||
#
|
#
|
||||||
# Nginx directories
|
# Nginx directories
|
||||||
#
|
#
|
||||||
nginx_htpasswd_dir: '/etc/nginx/htpasswd'
|
nginx_htpasswd_dir: '{{ nginx_etc_dir}}/htpasswd'
|
||||||
nginx_ssl_dir: '/etc/nginx/ssl'
|
nginx_ssl_dir: '{{ nginx_etc_dir}}/ssl'
|
||||||
nginx_helper_dir: '/etc/nginx/helper'
|
nginx_helper_dir: '{{ nginx_etc_dir}}/helper'
|
||||||
|
|
||||||
#
|
#
|
||||||
# Load upstream
|
# Load upstream
|
||||||
|
@ -45,7 +44,6 @@ nginx_worker_processes: '{{ ansible_processor_vcpus }}'
|
||||||
#
|
#
|
||||||
nginx_events_worker_connections: '512'
|
nginx_events_worker_connections: '512'
|
||||||
nginx_events_multi_accept: 'on'
|
nginx_events_multi_accept: 'on'
|
||||||
nginx_events_use: 'epoll'
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Nginx HTTP
|
# Nginx HTTP
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
- name: TEMPLATE | Deploy nginx.conf
|
- name: TEMPLATE | Deploy nginx.conf
|
||||||
template: >
|
template: >
|
||||||
src=etc/nginx/nginx.conf.j2
|
src=etc/nginx/nginx.conf.j2
|
||||||
dest=/etc/nginx/nginx.conf
|
dest="{{ nginx_etc_dir }}/nginx.conf"
|
||||||
notify: reload nginx
|
notify: reload nginx
|
||||||
|
|
||||||
- name: TEMPLATE | Deploy all helpers
|
- name: TEMPLATE | Deploy all helpers
|
||||||
|
@ -16,6 +16,6 @@
|
||||||
- name: TEMPLATE | Deploy custom http configuration
|
- name: TEMPLATE | Deploy custom http configuration
|
||||||
template: >
|
template: >
|
||||||
src=etc/nginx/conf.d/custom.conf.j2
|
src=etc/nginx/conf.d/custom.conf.j2
|
||||||
dest=/etc/nginx/conf.d/custom.conf
|
dest="{{ nginx_etc_dir }}/conf.d/custom.conf"
|
||||||
notify: reload nginx
|
notify: reload nginx
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- name: PKGNG | Install nginx and related tools
|
||||||
|
pkgng: name=nginx state=present
|
||||||
|
with_items:
|
||||||
|
- nginx
|
||||||
|
- py27-passlib
|
||||||
|
- curl
|
||||||
|
|
||||||
|
- name: FILE | Create configuration dir (like Debian)
|
||||||
|
file: path="{{ nginx_etc_dir }}/{{ item }}" state=directory
|
||||||
|
with_items:
|
||||||
|
- conf.d
|
||||||
|
- sites-available
|
||||||
|
- sites-enabled
|
|
@ -1,7 +1,11 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
|
- name: INCLUDE_VARS | Related to OS
|
||||||
|
include_vars: "{{ ansible_distribution }}.yml"
|
||||||
|
|
||||||
- name: INCLUDE | Install
|
- name: INCLUDE | Install
|
||||||
include: install.yml
|
include: install_{{ ansible_distribution }}.yml
|
||||||
|
|
||||||
- name: INCLUDE | Prepare
|
- name: INCLUDE | Prepare
|
||||||
include: prepare.yml
|
include: prepare.yml
|
||||||
|
|
|
@ -1,11 +1,15 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
- name: TEMPLATE | Deploy PHP upstream to Nginx
|
- name: TEMPLATE | Deploy PHP upstream to Nginx
|
||||||
template: src=etc/nginx/upstream/php.conf.j2 dest=/etc/nginx/conf.d/php.conf
|
template: >
|
||||||
|
src=etc/nginx/upstream/php.conf.j2
|
||||||
|
dest="{{ nginx_etc_dir }}/conf.d/php.conf"
|
||||||
when: nginx_php
|
when: nginx_php
|
||||||
notify: reload nginx
|
notify: reload nginx
|
||||||
|
|
||||||
- name: TEMPLATE | Deploy other upstreams
|
- name: TEMPLATE | Deploy other upstreams
|
||||||
template: src=etc/nginx/upstream/upstream.conf.j2 dest=/etc/nginx/conf.d/upstream-{{ item.name }}.conf
|
template: >
|
||||||
|
src=etc/nginx/upstream/upstream.conf.j2
|
||||||
|
dest={{ nginx_etc_dir }}/conf.d/upstream-{{ item.name }}.conf
|
||||||
with_items: "{{ nginx_upstreams }}"
|
with_items: "{{ nginx_upstreams }}"
|
||||||
notify: reload nginx
|
notify: reload nginx
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
file: >
|
file: >
|
||||||
path={{ nginx_root }}/{{ item.name if item.name is string else item.name[0] }}/public
|
path={{ nginx_root }}/{{ item.name if item.name is string else item.name[0] }}/public
|
||||||
state=directory
|
state=directory
|
||||||
owner={{ item.owner | default('www-data') }}
|
owner={{ item.owner | default(nginx_user) }}
|
||||||
group={{ item.group | default('www-data') }}
|
group={{ item.group | default(nginx_user) }}
|
||||||
mode={{ item.mode | default('0755') }}
|
mode={{ item.mode | default('0755') }}
|
||||||
with_items: "{{ nginx_vhosts }}"
|
with_items: "{{ nginx_vhosts }}"
|
||||||
when: >
|
when: >
|
||||||
|
@ -30,21 +30,21 @@
|
||||||
- name: TEMPLATE | Create vhosts
|
- name: TEMPLATE | Create vhosts
|
||||||
template: >
|
template: >
|
||||||
src=etc/nginx/sites-available/{{ item.template if item.redirect_to is not defined else '_redirect' }}.j2
|
src=etc/nginx/sites-available/{{ item.template if item.redirect_to is not defined else '_redirect' }}.j2
|
||||||
dest=/etc/nginx/sites-available/{{ item.name if item.name is string else item.name[0] }}
|
dest={{ nginx_etc_dir }}/sites-available/{{ item.name if item.name is string else item.name[0] }}
|
||||||
with_items: "{{ nginx_vhosts }}"
|
with_items: "{{ nginx_vhosts }}"
|
||||||
notify: reload nginx
|
notify: reload nginx
|
||||||
when: item.delete is not defined or not item.delete
|
when: item.delete is not defined or not item.delete
|
||||||
|
|
||||||
- name: FILE | Delete vhosts
|
- name: FILE | Delete vhosts
|
||||||
file: path=/etc/nginx/sites-available/{{ item.name if item.name is string else item.name[0] }} state=absent
|
file: path={{ nginx_etc_dir }}/sites-available/{{ item.name if item.name is string else item.name[0] }} state=absent
|
||||||
with_items: "{{ nginx_vhosts }}"
|
with_items: "{{ nginx_vhosts }}"
|
||||||
notify: reload nginx
|
notify: reload nginx
|
||||||
when: item.delete is defined and item.delete
|
when: item.delete is defined and item.delete
|
||||||
|
|
||||||
- name: FILE | Enable vhosts
|
- name: FILE | Enable vhosts
|
||||||
file: >
|
file: >
|
||||||
src=/etc/nginx/sites-available/{{ item.name if item.name is string else item.name[0] }}
|
src={{ nginx_etc_dir }}/sites-available/{{ item.name if item.name is string else item.name[0] }}
|
||||||
dest=/etc/nginx/sites-enabled/{{ item.name if item.name is string else item.name[0] }}
|
dest={{ nginx_etc_dir }}/sites-enabled/{{ item.name if item.name is string else item.name[0] }}
|
||||||
state=link
|
state=link
|
||||||
with_items: "{{ nginx_vhosts }}"
|
with_items: "{{ nginx_vhosts }}"
|
||||||
notify: reload nginx
|
notify: reload nginx
|
||||||
|
@ -54,22 +54,22 @@
|
||||||
(item.delete is not defined or not item.delete)
|
(item.delete is not defined or not item.delete)
|
||||||
|
|
||||||
- name: FILE | Disable vhosts
|
- name: FILE | Disable vhosts
|
||||||
file: path=/etc/nginx/sites-enabled/{{ item.name if item.name is string else item.name[0] }} state=absent
|
file: path={{ nginx_etc_dir}}/sites-enabled/{{ item.name if item.name is string else item.name[0] }} state=absent
|
||||||
with_items: "{{ nginx_vhosts }}"
|
with_items: "{{ nginx_vhosts }}"
|
||||||
notify: reload nginx
|
notify: reload nginx
|
||||||
when: (item.enable is defined and not item.enable) or (item.delete is defined and item.delete)
|
when: (item.enable is defined and not item.enable) or (item.delete is defined and item.delete)
|
||||||
|
|
||||||
- name: FILE | Delete default vhost when explicitely defined
|
- name: FILE | Delete default vhost when explicitely defined
|
||||||
file: >
|
file: >
|
||||||
path=/etc/nginx/sites-enabled/default
|
path={{ nginx_etc_dir }}/sites-enabled/default
|
||||||
state=absent
|
state=absent
|
||||||
notify: reload nginx
|
notify: reload nginx
|
||||||
when: nginx_default_vhost is not none
|
when: nginx_default_vhost is not none
|
||||||
|
|
||||||
- name: FILE | Auto set default vhost
|
- name: FILE | Auto set default vhost
|
||||||
file: >
|
file: >
|
||||||
src=/etc/nginx/sites-available/default
|
src={{ nginx_etc_dir }}/sites-available/default
|
||||||
dest=/etc/nginx/sites-enabled/default
|
dest={{ nginx_etc_dir }}/sites-enabled/default
|
||||||
state=link
|
state=link
|
||||||
notify: reload nginx
|
notify: reload nginx
|
||||||
when: nginx_default_vhost is none
|
when: nginx_default_vhost is none
|
||||||
|
|
|
@ -14,7 +14,7 @@ events {
|
||||||
|
|
||||||
http {
|
http {
|
||||||
types_hash_max_size {{ nginx_http_types_hash_max_size }};
|
types_hash_max_size {{ nginx_http_types_hash_max_size }};
|
||||||
include /etc/nginx/mime.types;
|
include {{ nginx_etc_dir }}/mime.types;
|
||||||
|
|
||||||
default_type {{ nginx_http_default_type }};
|
default_type {{ nginx_http_default_type }};
|
||||||
access_log {{ nginx_http_access_log }};
|
access_log {{ nginx_http_access_log }};
|
||||||
|
|
|
@ -2,20 +2,27 @@
|
||||||
|
|
||||||
- hosts: all
|
- hosts: all
|
||||||
pre_tasks:
|
pre_tasks:
|
||||||
- name: APT_REPOSITORY | Install backports
|
- block:
|
||||||
apt_repository: repo='deb http://httpredir.debian.org/debian {{ ansible_distribution_release }}-backports main' state=present
|
- name: APT_REPOSITORY | Install backports
|
||||||
- name: APT | Install needed packages
|
apt_repository: repo='deb http://httpredir.debian.org/debian {{ ansible_distribution_release }}-backports main' state=present
|
||||||
apt: pkg={{ item }} update_cache=yes cache_valid_time=3600 state=present
|
- name: APT | Install needed packages
|
||||||
with_items:
|
apt: pkg={{ item }} update_cache=yes cache_valid_time=3600 state=present
|
||||||
- php5-fpm
|
with_items:
|
||||||
- curl
|
- php5-fpm
|
||||||
- fcgiwrap
|
- curl
|
||||||
- name: SERVICE | Force start services
|
- fcgiwrap
|
||||||
service: name={{ item }} state=started
|
- name: SERVICE | Force start services
|
||||||
register: sf
|
service: name={{ item }} state=started
|
||||||
with_items:
|
register: sf
|
||||||
- php5-fpm
|
with_items:
|
||||||
- fcgiwrap
|
- php5-fpm
|
||||||
|
- fcgiwrap
|
||||||
|
when: ansible_distribution == 'Debian'
|
||||||
|
- block:
|
||||||
|
- name: SET_FACT | FreeBSD web user
|
||||||
|
set_fact:
|
||||||
|
nginx_user: 'www'
|
||||||
|
when: ansible_distribution == 'FreeBSD'
|
||||||
- name: PAUSE | Prevent bugs (CGI not fully loaded)
|
- name: PAUSE | Prevent bugs (CGI not fully loaded)
|
||||||
pause: seconds=5
|
pause: seconds=5
|
||||||
when: sf.changed
|
when: sf.changed
|
||||||
|
@ -29,6 +36,7 @@
|
||||||
# Internal vars
|
# Internal vars
|
||||||
int_ansible_ssl_dir: '/etc/ansible-ssl'
|
int_ansible_ssl_dir: '/etc/ansible-ssl'
|
||||||
# Role vars
|
# Role vars
|
||||||
|
nginx_worker_processes: 1 # Ansible+FreeBSD can't detect CPU number
|
||||||
nginx_backports: true
|
nginx_backports: true
|
||||||
nginx_php: true
|
nginx_php: true
|
||||||
nginx_upstreams:
|
nginx_upstreams:
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
nginx_events_use: 'epoll'
|
||||||
|
nginx_pid: '/run/nginx.pid'
|
||||||
|
nginx_etc_dir: '/etc/nginx'
|
|
@ -0,0 +1,5 @@
|
||||||
|
nginx_events_use: 'kqueue'
|
||||||
|
nginx_pid: '/var/run/nginx.pid'
|
||||||
|
nginx_etc_dir: '/usr/local/etc/nginx'
|
||||||
|
|
||||||
|
# TODO: it's a dirty to force variable here!
|
Loading…
Reference in New Issue