mirror of
https://gitlab.sectorq.eu/jaydee/ansible.git
synced 2025-07-01 15:38:33 +02:00
174 lines
6.9 KiB
YAML
Executable File
174 lines
6.9 KiB
YAML
Executable File
- hosts: docker_servers
|
|
name: Switch server
|
|
ignore_unreachable: false
|
|
|
|
tasks:
|
|
- name: Reconfigure swap size
|
|
ansible.builtin.lineinfile:
|
|
path: /etc/sysctl.conf
|
|
regexp: "^net.ipv4.igmp_max_memberships =.*"
|
|
line: "net.ipv4.igmp_max_memberships = 1024"
|
|
create: true
|
|
become: "{{ false if inventory_hostname == 'nas.home.lan' else true }}"
|
|
when: inventory_hostname != "router.home.lan"
|
|
|
|
- name: Start containers
|
|
shell: docker start `docker ps -a |awk '{ print $NF }'|grep -v NAME |xargs`
|
|
become: "{{ false if inventory_hostname == 'nas.home.lan' else true }}"
|
|
ignore_errors: true
|
|
when: inventory_hostname == destination and inventory_hostname != "nas.home.lan"
|
|
- name: Start containers
|
|
shell: docker exec -it gitlab update-permissions
|
|
become: "{{ false if inventory_hostname == 'nas.home.lan' else true }}"
|
|
ignore_errors: true
|
|
when: inventory_hostname == destination and inventory_hostname != "nas.home.lan and inventory_hostname != "rpi5.home.lan"
|
|
|
|
|
|
- name: Start containers
|
|
shell: /share/ZFS530_DATA/.qpkg/container-station/bin/docker exec -it gitlab update-permissions
|
|
become: "{{ false if inventory_hostname == 'nas.home.lan' else true }}"
|
|
ignore_errors: true
|
|
when: inventory_hostname == destination and inventory_hostname == "nas.home.lan"
|
|
|
|
|
|
- name: Start containers
|
|
shell: /share/ZFS530_DATA/.qpkg/container-station/bin/docker start `/share/ZFS530_DATA/.qpkg/container-station/bin/docker ps -a |awk '{ print $NF }'|grep -v NAME |xargs`
|
|
become: "{{ false if inventory_hostname == 'nas.home.lan' else true }}"
|
|
ignore_errors: true
|
|
when: inventory_hostname == destination and inventory_hostname == "nas.home.lan"
|
|
|
|
- name: Get Authentification token
|
|
ansible.builtin.uri:
|
|
url: http://localhost:9380/api/auth
|
|
method: POST
|
|
body_format: json
|
|
body: {"password":"l4c1j4yd33Du5lo"}
|
|
register: login
|
|
when: inventory_hostname != "router.home.lan"
|
|
# - debug:
|
|
# msg: "{{ login.json.session }}"
|
|
|
|
- name: Get Config
|
|
ansible.builtin.uri:
|
|
url: http://localhost:9380/api/config
|
|
method: GET
|
|
headers:
|
|
X-FTL-SID: "{{ login.json.session.sid }}"
|
|
register: old_config
|
|
when: inventory_hostname != "router.home.lan"
|
|
|
|
# - debug:
|
|
# msg: "{{ old_config.json.config.dns.cnameRecords }}"
|
|
|
|
- name: Parse config
|
|
ansible.builtin.set_fact:
|
|
jsondata: "{{ old_config }}"
|
|
|
|
- name: New records for nas
|
|
ansible.builtin.set_fact:
|
|
new_data: ["mqtt.home.lan,nas.home.lan","media.home.lan,nas.home.lan","ldap.home.lan,nas.home.lan","webhub.home.lan,nas.home.lan","semaphore.home.lan,nas.home.lan","active.home.lan,nas.home.lan"]
|
|
when: destination == 'nas.home.lan'
|
|
|
|
- name: New records for m-server
|
|
ansible.builtin.set_fact:
|
|
new_data: ["mqtt.home.lan,m-server.home.lan","media.home.lan,m-server.home.lan","ldap.home.lan,m-server.home.lan","webhub.home.lan,m-server.home.lan","semaphore.home.lan,m-server.home.lan","active.home.lan,m-server.home.lan"]
|
|
when: destination == 'm-server.home.lan'
|
|
|
|
- name: New records for rpi5
|
|
ansible.builtin.set_fact:
|
|
new_data: ["mqtt.home.lan,rpi5.home.lan","media.home.lan,rpi5.home.lan","ldap.home.lan,rpi5.home.lan","webhub.home.lan,rpi5.home.lan","semaphore.home.lan,rpi5.home.lan","active.home.lan,rpi5.home.lan"]
|
|
when: destination == 'rpi5.home.lan'
|
|
|
|
|
|
# - debug:
|
|
# msg: "{{ new_data }}"
|
|
|
|
- name: Set new values
|
|
ansible.utils.update_fact:
|
|
updates:
|
|
- path: jsondata.json.config.dns.cnameRecords
|
|
value: "{{ new_data }}"
|
|
register: new_config
|
|
when: inventory_hostname != "router.home.lan"
|
|
|
|
- name: Patch config
|
|
ansible.builtin.uri:
|
|
url: http://localhost:9380/api/config
|
|
method: PATCH
|
|
body: "{{ new_config.jsondata.json |to_json}}"
|
|
headers:
|
|
X-FTL-SID: "{{ login.json.session.sid }}"
|
|
Content-Type: application/json
|
|
register: _result
|
|
until: _result.status == 200
|
|
retries: 3 # 720 * 5 seconds = 1hour (60*60/5)
|
|
delay: 5 # Every 5 seconds
|
|
register: _result
|
|
until: _result.status == 200
|
|
retries: 3 # 720 * 5 seconds = 1hour (60*60/5)
|
|
delay: 5 # Every 5 seconds
|
|
when: inventory_hostname != "router.home.lan"
|
|
|
|
|
|
|
|
- name: Sleep for 30 seconds and continue with play
|
|
ansible.builtin.wait_for:
|
|
timeout: 10
|
|
- name: Logout
|
|
ansible.builtin.uri:
|
|
url: http://localhost:9380/api/auth
|
|
method: DELETE
|
|
status_code: 204
|
|
headers:
|
|
X-FTL-SID: "{{ login.json.session.sid }}"
|
|
when: inventory_hostname != "router.home.lan"
|
|
ignore_errors: true
|
|
- name: Setting up resolv.conf
|
|
ansible.builtin.copy:
|
|
dest: "/etc/resolv.conf"
|
|
content: |
|
|
nameserver 192.168.77.101
|
|
nameserver 192.168.77.106
|
|
nameserver 192.168.77.238
|
|
options rotate
|
|
options timeout:1
|
|
become: "{{ false if inventory_hostname == 'nas.home.lan' else true }}"
|
|
|
|
|
|
# until: _result.status == 204
|
|
# retries: 3 # 720 * 5 seconds = 1hour (60*60/5)
|
|
# delay: 5 # Every 5 seconds
|
|
- name: Sleep for 60 seconds and continue with play
|
|
ansible.builtin.wait_for:
|
|
timeout: 60
|
|
|
|
- name: Reconfigurte router containers
|
|
shell: python3 /root/unifi-api/unifi.py -s -d "{{ destination.split('.')[0] }}"
|
|
when: inventory_hostname == "router.home.lan"
|
|
|
|
- name: Stop containers
|
|
shell: docker stop `docker ps -a |awk '{ print $NF }'|egrep -v "NAME|^pihole$|watchtower|portainer" |xargs`
|
|
become: "{{ false if inventory_hostname == 'nas.home.lan' else true }}"
|
|
ignore_errors: true
|
|
when: inventory_hostname != destination and inventory_hostname != "nas.home.lan" and inventory_hostname != "router.home.lan"
|
|
|
|
- name: Restart containers
|
|
shell: docker restart nginx-app-1
|
|
become: "{{ false if inventory_hostname == 'nas.home.lan' else true }}"
|
|
when: inventory_hostname == destination
|
|
|
|
- name: Stop containers
|
|
shell: /share/ZFS530_DATA/.qpkg/container-station/bin/docker stop `/share/ZFS530_DATA/.qpkg/container-station/bin/docker ps -a |awk '{ print $NF }'|egrep -v "NAME|pihole|watchtower" |xargs`
|
|
become: "{{ false if inventory_hostname == 'nas.home.lan' else true }}"
|
|
ignore_errors: true
|
|
when: inventory_hostname != destination and inventory_hostname == "nas.home.lan" and inventory_hostname != "router.home.lan"
|
|
|
|
- name: Sleep for 120 seconds and continue with play
|
|
ansible.builtin.wait_for:
|
|
timeout: 120
|
|
# - name: Restart containers
|
|
# shell: docker restart nginx-app-1
|
|
# become: "{{ false if inventory_hostname == 'nas.home.lan' else true }}"
|
|
# when: inventory_hostname == destination
|
|
|