mirror of
				https://gitlab.sectorq.eu/jaydee/ansible.git
				synced 2025-10-30 18:01:11 +01: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
 | |
| 
 |