parent
be4a482b89
commit
9df858036b
@ -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 @@ |
||||
<?php phpinfo(); ?> |
||||
@ -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 @@ |
||||
main_with_haproxy.yml |
||||
@ -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 @@ |
||||
<h1>{{ inventory_hostname }}</h1> |
||||
@ -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…
Reference in new issue