Add loadbalancer to playbook using new caddy role
This commit is contained in:
parent
7e00e22c27
commit
f62a53e476
1
ansible/group_vars/lb
Normal file
1
ansible/group_vars/lb
Normal file
@ -0,0 +1 @@
|
|||||||
|
ansible_ssh_user: root
|
@ -21,13 +21,32 @@
|
|||||||
- "alt.pub"
|
- "alt.pub"
|
||||||
register: tf_out
|
register: tf_out
|
||||||
|
|
||||||
|
- debug: var=tf_out
|
||||||
|
|
||||||
- add_host:
|
- add_host:
|
||||||
name: "{{ item.key }}"
|
name: "{{ item.key }}"
|
||||||
ansible_host: "{{ item.value }}"
|
ansible_host: "{{ item.value }}"
|
||||||
group: web
|
group: web
|
||||||
loop: "{{ tf_out.outputs.server_ips.value | dict2items }}"
|
loop: "{{ tf_out.outputs.server_ips.value | dict2items }}"
|
||||||
|
|
||||||
- name: Setup LEMP stack
|
- add_host:
|
||||||
|
name: "lb"
|
||||||
|
ansible_host: "{{ tf_out.outputs.lb_public_ip.value }}"
|
||||||
|
group: lb
|
||||||
|
|
||||||
|
- name: Setup loadbalancer
|
||||||
|
hosts: lb
|
||||||
|
vars:
|
||||||
|
caddy:
|
||||||
|
server_name: wordpress-jr.senecops.com
|
||||||
|
lb_targets:
|
||||||
|
- 10.0.0.3:80
|
||||||
|
- 10.0.0.4:80
|
||||||
|
- 10.0.0.5:80
|
||||||
|
roles:
|
||||||
|
- caddy
|
||||||
|
|
||||||
|
- name: Setup LEMP stack on application servers
|
||||||
hosts: web
|
hosts: web
|
||||||
vars_files:
|
vars_files:
|
||||||
- vault.yaml
|
- vault.yaml
|
||||||
@ -51,7 +70,8 @@
|
|||||||
- 10.0.0.5
|
- 10.0.0.5
|
||||||
mysql:
|
mysql:
|
||||||
replication_user: replica_user
|
replication_user: replica_user
|
||||||
replication_master: web1
|
replication_master_hostname: web1
|
||||||
|
replication_master_ip: 10.0.0.3
|
||||||
replication_slaves:
|
replication_slaves:
|
||||||
- web2
|
- web2
|
||||||
- web3
|
- web3
|
||||||
|
45
ansible/roles/caddy/tasks/main.yaml
Normal file
45
ansible/roles/caddy/tasks/main.yaml
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
---
|
||||||
|
- name: Install required packages
|
||||||
|
ansible.builtin.apt:
|
||||||
|
update_cache: true
|
||||||
|
cache_valid_time: 3600
|
||||||
|
name:
|
||||||
|
- debian-keyring
|
||||||
|
- debian-archive-keyring
|
||||||
|
- apt-transport-https
|
||||||
|
become: true
|
||||||
|
|
||||||
|
- name: Fetch gpg key
|
||||||
|
ansible.builtin.apt_key:
|
||||||
|
url: https://dl.cloudsmith.io/public/caddy/stable/gpg.key
|
||||||
|
id: 155B6D79CA56EA34
|
||||||
|
keyring: /usr/share/keyrings/caddy-stable-archive-keyring.gpg
|
||||||
|
become: true
|
||||||
|
|
||||||
|
- name: Add specified repository into sources list using specified filename
|
||||||
|
ansible.builtin.apt_repository:
|
||||||
|
repo: "deb [signed-by=/usr/share/keyrings/caddy-stable-archive-keyring.gpg] https://dl.cloudsmith.io/public/caddy/stable/deb/debian any-version main"
|
||||||
|
state: present
|
||||||
|
filename: caddy-stable
|
||||||
|
|
||||||
|
- name: Install caddy
|
||||||
|
ansible.builtin.apt:
|
||||||
|
update_cache: true
|
||||||
|
cache_valid_time: 3600
|
||||||
|
name:
|
||||||
|
- caddy
|
||||||
|
become: true
|
||||||
|
|
||||||
|
- name: Write Caddyfile
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: "Caddyfile.j2"
|
||||||
|
dest: "/etc/caddy/Caddyfile"
|
||||||
|
mode: "0644"
|
||||||
|
become: true
|
||||||
|
|
||||||
|
- name: Start service
|
||||||
|
ansible.builtin.service:
|
||||||
|
name: caddy
|
||||||
|
state: restarted
|
||||||
|
enabled: true
|
||||||
|
become: true
|
5
ansible/roles/caddy/templates/Caddyfile.j2
Normal file
5
ansible/roles/caddy/templates/Caddyfile.j2
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{{ caddy.server_name }} {
|
||||||
|
reverse_proxy {{ caddy.lb_targets | join(" ") }} {
|
||||||
|
lb_policy cookie
|
||||||
|
}
|
||||||
|
}
|
@ -26,7 +26,7 @@
|
|||||||
"*.*": "REPLICATION SLAVE"
|
"*.*": "REPLICATION SLAVE"
|
||||||
login_unix_socket: /var/run/mysqld/mysqld.sock
|
login_unix_socket: /var/run/mysqld/mysqld.sock
|
||||||
become: true
|
become: true
|
||||||
when: mysql.replication_master in ansible_all_ipv4_addresses
|
when: ansible_hostname == mysql.replication_master_hostname
|
||||||
|
|
||||||
- name: Get master replication status
|
- name: Get master replication status
|
||||||
community.mysql.mysql_replication:
|
community.mysql.mysql_replication:
|
||||||
@ -34,7 +34,7 @@
|
|||||||
login_password: "{{ mysql_root_password }}"
|
login_password: "{{ mysql_root_password }}"
|
||||||
mode: getmaster
|
mode: getmaster
|
||||||
register: repl_stat
|
register: repl_stat
|
||||||
when: ansible_hostname == mysql.replication_master
|
when: ansible_hostname == mysql.replication_master_hostname
|
||||||
|
|
||||||
- debug: var=repl_stat
|
- debug: var=repl_stat
|
||||||
|
|
||||||
@ -52,12 +52,12 @@
|
|||||||
login_user: root
|
login_user: root
|
||||||
login_password: "{{ mysql_root_password }}"
|
login_password: "{{ mysql_root_password }}"
|
||||||
mode: changemaster
|
mode: changemaster
|
||||||
master_host: "{{ mysql.replication_master }}"
|
master_host: "{{ mysql.replication_master_ip }}"
|
||||||
master_log_file: "{{ hostvars['web1'].repl_stat.File }}"
|
master_log_file: "{{ hostvars['web1'].repl_stat.File }}"
|
||||||
master_log_pos: "{{ hostvars['web1'].repl_stat.Position }}"
|
master_log_pos: "{{ hostvars['web1'].repl_stat.Position }}"
|
||||||
master_user: "{{ mysql.replication_user }}"
|
master_user: "{{ mysql.replication_user }}"
|
||||||
master_password: "{{ mysql_replication_pass }}"
|
master_password: "{{ mysql_replication_pass }}"
|
||||||
when: ansible_hostname in mysql.replication_slaves and not slave.Is_Slave
|
when: ansible_hostname in mysql.replication_slaves
|
||||||
|
|
||||||
- name: Start slave replication
|
- name: Start slave replication
|
||||||
community.mysql.mysql_replication:
|
community.mysql.mysql_replication:
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[mysqld]
|
[mysqld]
|
||||||
bind-address = "0.0.0.0"
|
bind-address = "0.0.0.0"
|
||||||
{% if ansible_hostname == mysql.replication_master %}
|
{% if ansible_hostname == mysql.replication_master_hostname %}
|
||||||
server-id = 1
|
server-id = 1
|
||||||
expire_logs_days = 10
|
expire_logs_days = 10
|
||||||
max_binlog_size = 100M
|
max_binlog_size = 100M
|
||||||
|
Loading…
x
Reference in New Issue
Block a user