vault
Eamonn Travers 6 years ago
parent be4a482b89
commit 9df858036b
  1. 4
      ansible.cfg
  2. 11
      dynmaic_groups.yml
  3. 5
      roles/webcluster/roles/web_base/defaults/main.yml
  4. 3
      roles/webcluster/roles/web_base/meta/main.yml
  5. 11
      roles/webcluster/roles/web_db/defaults/main.yml
  6. 27
      roles/webcluster/roles/web_db/tasks/main.yml
  7. 5
      roles/webcluster/roles/web_lb/defaults/main.yml
  8. 12
      roles/webcluster/roles/web_lb/handlers/main.yml
  9. 24
      roles/webcluster/roles/web_lb/tasks/main.yml
  10. 58
      roles/webcluster/roles/web_lb/templates/haproxy.cfg.j2
  11. 25
      roles/webcluster/roles/web_worker/defaults/main.yml
  12. 1
      roles/webcluster/roles/web_worker/files/var/www/worker/index.php
  13. 11
      roles/webcluster/roles/web_worker/handlers/main.yml
  14. 5
      roles/webcluster/roles/web_worker/tasks/db_update.yml
  15. 1
      roles/webcluster/roles/web_worker/tasks/main.yml
  16. 92
      roles/webcluster/roles/web_worker/tasks/main_with_haproxy.yml
  17. 84
      roles/webcluster/roles/web_worker/tasks/main_with_socat.yml
  18. 11
      roles/webcluster/roles/web_worker/templates/etc/apache2/sites-available/worker.conf.j2
  19. 12
      roles/webcluster/roles/web_worker/templates/etc/php/7.0/fpm/pool.d/worker.conf.j2
  20. 1
      roles/webcluster/roles/web_worker/templates/var/www/worker/index.html.j2
  21. 6
      roles/webcluster/web_db.yml
  22. 8
      roles/webcluster/web_lb.yml
  23. 23
      roles/webcluster/web_site.yml
  24. 10
      roles/webcluster/web_worker.yml

@ -1,5 +1,9 @@
[defaults]
inventory = ./inventory/
gathering = smart
fact_cachung_timeout = 86400
fact_caching = yaml
fact_caching_connection = ../cachdir/
deprecation_warnings = false
interpreter_discovery = auto
remote_user = root

@ -0,0 +1,11 @@
---
- hosts: all
tasks:
- group_by:
key: "virt_{{ ansible_distribution }}"
- hosts: virt_Debian
gather_facts: no
tasks:
- name: Testytest
shell: 'uname -a'

@ -0,0 +1,5 @@
---
ntp_server:
- 0.de.pool.ntp.org
- 1.de.pool.ntp.org
- 2.de.pool.ntp.org

@ -0,0 +1,3 @@
---
dependencies:
- { role: ntp }

@ -0,0 +1,11 @@
---
db_packages:
- mariadb-server
- python-mysqldb
db_servicename: mysql
db_name: webapp
db_user: webappuser
db_password: webapppw

@ -0,0 +1,27 @@
---
- name: Install software
package:
name: "{{ item }}"
state: present
with_items: "{{ db_packages }}"
- name: MariaDB enable service
service:
name: "{{ db_servicename }}"
state: started
enabled: yes
- name: MariaDB create DB
mysql_db:
name: "{{ db_name }}"
state: present
- name: MariaDB create user
mysql_user:
name: "{{ db_user }}"
password: "{{ db_password }}"
priv: '{{ db_name }}.*:ALL'
host: '%'
state: present

@ -0,0 +1,5 @@
---
lb_packages:
- haproxy
- socat

@ -0,0 +1,12 @@
---
- name: Restart HAProxy
service:
name: haproxy
state: restarted
- name: Restart RSyslog
service:
name: rsyslog
state: restarted

@ -0,0 +1,24 @@
---
- name: Install software
package:
name: "{{ item }}"
state: latest
with_items: "{{ lb_packages }}"
notify: Restart RSyslog
- name: HAProxy enable service
service:
name: haproxy
enabled: yes
state: started
- name: HAProxy create config
template:
dest: "/etc/haproxy/haproxy.cfg"
src: "haproxy.cfg.j2"
mode: 0644
backup: yes
notify:
- Restart HAProxy
- Restart RSyslog

@ -0,0 +1,58 @@
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# Default ciphers to use on SSL-enabled listening sockets.
# For more information, see ciphers(1SSL).
ssl-default-bind-ciphers kEECDH+aRSA+AES:kRSA+AES:+AES256:RC4-SHA:!kEDH:!LOW:!EXP:!MD5:!aNULL:!eNULL
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
frontend localnodes
bind *:80
mode http
default_backend nodes
backend nodes
mode http
balance roundrobin
option forwardfor
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
option httpchk HEAD / HTTP/1.1\r\nHost:localhost
#server worker_01 172.22.244.81:80 check
{% for host in groups['worker'] %}
server {{ hostvars[host]['inventory_hostname'] }} {{ hostvars[host]['ansible_default_ipv4'].address }}:80 check
{% endfor %}
listen stats
bind *:1936
stats enable
stats uri /
stats hide-version
stats auth admin:admin

@ -0,0 +1,25 @@
---
worker_packages:
- apache2
- php-fpm
- php-mysql
worker_a2mods:
- mpm_event
- proxy
- proxy_fcgi
- rewrite
worker_a2dissites:
- 000-default.conf
- default-ssl.conf
worker_a2ensites:
- worker.conf
worker_a2docroots:
- var/www/worker
worker_phpfpmpools:
- etc/php/7.0/fpm/pool.d/worker.conf

@ -0,0 +1,11 @@
---
- name: Restart Apache2
service:
name: apache2
state: restarted
- name: Restart PHP-FPM
service:
name: php7.0-fpm
state: restarted

@ -0,0 +1,5 @@
---
- name: Update DB schema
command: {{ worker_dbupdate_command }}
run_once: True

@ -0,0 +1,92 @@
---
- name: Install software
package:
name: "{{ item }}"
state: latest
with_items: "{{ worker_packages }}"
- name: Apache2 enable modules
apache2_module:
name: "{{ item }}"
state: present
with_items: "{{ worker_a2mods }}"
notify: Restart Apache2
- name: Apache2 disable sites
file:
path: "/etc/apache2/sites-enabled/{{ item }}"
state: absent
with_items: "{{ worker_a2dissites }}"
notify: Restart Apache2
- name: Apache2 create vhosts
template:
dest: "/etc/apache2/sites-available/{{ item }}"
src: "etc/apache2/sites-available/{{ item }}.j2"
mode: 0644
backup: yes
with_items: "{{ worker_a2ensites }}"
notify: Restart Apache2
- name: Apache2 enable sites
file:
path: "/etc/apache2/sites-enabled/{{ item }}"
src: "/etc/apache2/sites-available/{{ item }}"
state: link
force: yes
with_items: "{{ worker_a2ensites }}"
notify: Restart Apache2
- name: Apache2 create DocRoots
file:
path: "/{{ item }}"
state: directory
mode: 0755
with_items: "{{ worker_a2docroots }}"
notify: Restart Apache2
- name: PHP Install pools
template:
dest: "/{{ item }}"
src: "{{ item }}.j2"
mode: 0644
backup: yes
with_items: "{{ worker_phpfpmpools }}"
notify: Restart PHP-FPM
- name: Disable worker in load balancers
haproxy:
socket: /run/haproxy/admin.sock
backend: nodes
host: "{{ inventory_hostname }}"
state: disabled
delegate_to: "{{ item }}"
with_items: "{{ groups.lb }}"
- name: Apache2 copy websites
copy:
dest: "/{{ item }}/"
src: "{{ item }}/"
backup: yes
with_items: "{{ worker_a2docroots }}"
- name: Apache2 template dummy index.html
template:
dest: "/{{ item }}/index.html"
src: "{{ item }}/index.html.j2"
mode: 0644
backup: yes
with_items: "{{ worker_a2docroots }}"
- name: Sleep 30 seconds...
pause: seconds=30
- name: Enable worker in load balancers
haproxy:
socket: /run/haproxy/admin.sock
backend: nodes
host: "{{ inventory_hostname }}"
state: enabled
delegate_to: "{{ item }}"
with_items: "{{ groups.lb }}"

@ -0,0 +1,84 @@
---
- name: Install software
package:
name: "{{ item }}"
state: latest
with_items: "{{ worker_packages }}"
- name: Apache2 enable modules
apache2_module:
name: "{{ item }}"
state: present
with_items: "{{ worker_a2mods }}"
notify: Restart Apache2
- name: Apache2 disable sites
file:
path: "/etc/apache2/sites-enabled/{{ item }}"
state: absent
with_items: "{{ worker_a2dissites }}"
notify: Restart Apache2
- name: Apache2 create vhosts
template:
dest: "/etc/apache2/sites-available/{{ item }}"
src: "etc/apache2/sites-available/{{ item }}.j2"
mode: 0644
backup: yes
with_items: "{{ worker_a2ensites }}"
notify: Restart Apache2
- name: Apache2 disable sites
file:
path: "/etc/apache2/sites-enabled/{{ item }}"
src: "/etc/apache2/sites-available/{{ item }}"
state: link
force: yes
with_items: "{{ worker_a2ensites }}"
notify: Restart Apache2
- name: Apache2 create DocRoots
file:
path: "/{{ item }}"
state: directory
mode: 0755
with_items: "{{ worker_a2docroots }}"
notify: Restart Apache2
- name: PHP Install pools
template:
dest: "/{{ item }}"
src: "{{ item }}.j2"
mode: 0644
backup: yes
with_items: "{{ worker_phpfpmpools }}"
notify: Restart PHP-FPM
- name: Disable worker in load balancers
shell: "echo disable server nodes/{{ inventory_hostname }} | socat stdio /run/haproxy/admin.sock"
delegate_to: "{{ item }}"
with_items: "{{ groups.lb }}"
- name: Apache2 copy websites
copy:
dest: "/{{ item }}/"
src: "{{ item }}/"
backup: yes
with_items: "{{ worker_a2docroots }}"
- name: Apache2 template dummy index.html
template:
dest: "/{{ item }}/index.html"
src: "{{ item }}/index.html.j2"
mode: 0644
backup: yes
with_items: "{{ worker_a2docroots }}"
- name: Sleep 30 seconds...
pause: seconds=30
- name: Enable worker in load balancers
shell: 'echo "enable server nodes/{{ inventory_hostname }}" | socat stdio /run/haproxy/admin.sock'
delegate_to: "{{ item }}"
with_items: "{{ groups.lb }}"

@ -0,0 +1,11 @@
<VirtualHost *:80>
ServerName {{ inventory_hostname }}
DocumentRoot /var/www/worker
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:4001/var/www/worker/$1
DirectoryIndex index.php index.xhtml index.html
ErrorLog ${APACHE_LOG_DIR}/worker_{{ inventory_hostname }}.error.log
CustomLog ${APACHE_LOG_DIR}/worker_{{ inventory_hostname }}.access.log combined
</VirtualHost>

@ -0,0 +1,12 @@
[worker]
user = www-data
group = www-data
listen = 127.0.0.1:4001
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 5
pm.start_servers = 3
pm.min_spare_servers = 1
pm.max_spare_servers = 3

@ -0,0 +1,6 @@
---
- hosts: db
roles:
- web_db

@ -0,0 +1,8 @@
---
- hosts: worker
tasks: []
- hosts: lb
roles:
- web_lb

@ -0,0 +1,23 @@
---
- hosts: all
roles:
- web_base
- hosts: lb
serial: "25%"
max_fail_percentage: 40
roles:
- web_lb
- hosts: db
serial: 1
max_fail_percentage: 10
roles:
- web_db
- hosts: worker
serial: 2
max_fail_percentage: 20
roles:
- web_worker

@ -0,0 +1,10 @@
---
- hosts: lb
tasks: []
- hosts: worker
serial: 2
max_fail_percentage: 20
roles:
- web_worker
Loading…
Cancel
Save