[WIP] FreeBSD install ok

pull/14/head
Emilien Mantel 2016-03-05 15:07:39 +01:00
parent 44a5c31b12
commit e00313bb36
12 changed files with 89 additions and 35 deletions

17
Vagrantfile vendored
View File

@ -6,6 +6,7 @@
Vagrant.configure("2") do |config|
vms = [
[ "freebsd-10.2", "freebsd/FreeBSD-10.2-STABLE" ],
[ "debian-wheezy", "debian/wheezy64" ],
[ "debian-jessie", "debian/jessie64" ],
[ "debian-stretch", "sharlak/debian_stretch_64" ]
@ -21,11 +22,27 @@ Vagrant.configure("2") do |config|
m.vm.box = vm[1]
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|
ansible.playbook = "tests/test.yml"
ansible.groups = { "test" => [ vm[0] ] }
ansible.verbose = 'vv'
ansible.sudo = true
if vm[0] = "freebsd-10.2"
ansible.extra_vars = {
ansible_python_interpreter: '/usr/local/bin/python'
}
end
end
end
end

View File

@ -8,7 +8,6 @@ nginx_backports: false
#
nginx_root: "/srv/www"
nginx_log_dir: '/var/log/nginx'
nginx_pid: '/run/nginx.pid'
nginx_resolver_hosts: ['8.8.8.8', '8.8.4.4']
nginx_resolver_valid: '300s'
nginx_resolver_timeout: '5s'
@ -20,9 +19,9 @@ nginx_default_vhost_ssl: null
#
# Nginx directories
#
nginx_htpasswd_dir: '/etc/nginx/htpasswd'
nginx_ssl_dir: '/etc/nginx/ssl'
nginx_helper_dir: '/etc/nginx/helper'
nginx_htpasswd_dir: '{{ nginx_etc_dir}}/htpasswd'
nginx_ssl_dir: '{{ nginx_etc_dir}}/ssl'
nginx_helper_dir: '{{ nginx_etc_dir}}/helper'
#
# Load upstream
@ -45,7 +44,6 @@ nginx_worker_processes: '{{ ansible_processor_vcpus }}'
#
nginx_events_worker_connections: '512'
nginx_events_multi_accept: 'on'
nginx_events_use: 'epoll'
#
# Nginx HTTP

View File

@ -3,7 +3,7 @@
- name: TEMPLATE | Deploy nginx.conf
template: >
src=etc/nginx/nginx.conf.j2
dest=/etc/nginx/nginx.conf
dest="{{ nginx_etc_dir }}/nginx.conf"
notify: reload nginx
- name: TEMPLATE | Deploy all helpers
@ -16,6 +16,6 @@
- name: TEMPLATE | Deploy custom http configuration
template: >
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

View File

@ -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

View File

@ -1,7 +1,11 @@
---
- name: INCLUDE_VARS | Related to OS
include_vars: "{{ ansible_distribution }}.yml"
- name: INCLUDE | Install
include: install.yml
include: install_{{ ansible_distribution }}.yml
- name: INCLUDE | Prepare
include: prepare.yml

View File

@ -1,11 +1,15 @@
---
- 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
notify: reload nginx
- 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 }}"
notify: reload nginx

View File

@ -17,8 +17,8 @@
file: >
path={{ nginx_root }}/{{ item.name if item.name is string else item.name[0] }}/public
state=directory
owner={{ item.owner | default('www-data') }}
group={{ item.group | default('www-data') }}
owner={{ item.owner | default(nginx_user) }}
group={{ item.group | default(nginx_user) }}
mode={{ item.mode | default('0755') }}
with_items: "{{ nginx_vhosts }}"
when: >
@ -30,21 +30,21 @@
- name: TEMPLATE | Create vhosts
template: >
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 }}"
notify: reload nginx
when: item.delete is not defined or not item.delete
- 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 }}"
notify: reload nginx
when: item.delete is defined and item.delete
- name: FILE | Enable vhosts
file: >
src=/etc/nginx/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] }}
src={{ nginx_etc_dir }}/sites-available/{{ 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
with_items: "{{ nginx_vhosts }}"
notify: reload nginx
@ -54,22 +54,22 @@
(item.delete is not defined or not item.delete)
- 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 }}"
notify: reload nginx
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
file: >
path=/etc/nginx/sites-enabled/default
path={{ nginx_etc_dir }}/sites-enabled/default
state=absent
notify: reload nginx
when: nginx_default_vhost is not none
- name: FILE | Auto set default vhost
file: >
src=/etc/nginx/sites-available/default
dest=/etc/nginx/sites-enabled/default
src={{ nginx_etc_dir }}/sites-available/default
dest={{ nginx_etc_dir }}/sites-enabled/default
state=link
notify: reload nginx
when: nginx_default_vhost is none

View File

@ -14,7 +14,7 @@ events {
http {
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 }};
access_log {{ nginx_http_access_log }};

View File

@ -2,20 +2,27 @@
- hosts: all
pre_tasks:
- name: APT_REPOSITORY | Install backports
apt_repository: repo='deb http://httpredir.debian.org/debian {{ ansible_distribution_release }}-backports main' state=present
- name: APT | Install needed packages
apt: pkg={{ item }} update_cache=yes cache_valid_time=3600 state=present
with_items:
- php5-fpm
- curl
- fcgiwrap
- name: SERVICE | Force start services
service: name={{ item }} state=started
register: sf
with_items:
- php5-fpm
- fcgiwrap
- block:
- name: APT_REPOSITORY | Install backports
apt_repository: repo='deb http://httpredir.debian.org/debian {{ ansible_distribution_release }}-backports main' state=present
- name: APT | Install needed packages
apt: pkg={{ item }} update_cache=yes cache_valid_time=3600 state=present
with_items:
- php5-fpm
- curl
- fcgiwrap
- name: SERVICE | Force start services
service: name={{ item }} state=started
register: sf
with_items:
- 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)
pause: seconds=5
when: sf.changed
@ -29,6 +36,7 @@
# Internal vars
int_ansible_ssl_dir: '/etc/ansible-ssl'
# Role vars
nginx_worker_processes: 1 # Ansible+FreeBSD can't detect CPU number
nginx_backports: true
nginx_php: true
nginx_upstreams:

3
vars/Debian.yml 100644
View File

@ -0,0 +1,3 @@
nginx_events_use: 'epoll'
nginx_pid: '/run/nginx.pid'
nginx_etc_dir: '/etc/nginx'

5
vars/FreeBSD.yml 100644
View File

@ -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!