74 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
| ---
 | ||
| - name: 修正Nomad节点的Consul角色配置
 | ||
|   hosts: nomad_nodes
 | ||
|   become: yes
 | ||
|   vars:
 | ||
|     consul_addresses: "master.tailnet-68f9.ts.net:8500,ash3c.tailnet-68f9.ts.net:8500,warden.tailnet-68f9.ts.net:8500"
 | ||
| 
 | ||
|   tasks:
 | ||
|     - name: 备份原始Nomad配置
 | ||
|       copy:
 | ||
|         src: /etc/nomad.d/nomad.hcl
 | ||
|         dest: /etc/nomad.d/nomad.hcl.bak_{{ ansible_date_time.iso8601 }}
 | ||
|         remote_src: yes
 | ||
| 
 | ||
|     - name: 检查节点角色
 | ||
|       shell: grep -A 1 "server {" /etc/nomad.d/nomad.hcl | grep "enabled = true" | wc -l
 | ||
|       register: is_server
 | ||
|       changed_when: false
 | ||
| 
 | ||
|     - name: 检查节点角色
 | ||
|       shell: grep -A 1 "client {" /etc/nomad.d/nomad.hcl | grep "enabled = true" | wc -l
 | ||
|       register: is_client
 | ||
|       changed_when: false
 | ||
| 
 | ||
|     - name: 修正服务器节点的Consul配置
 | ||
|       blockinfile:
 | ||
|         path: /etc/nomad.d/nomad.hcl
 | ||
|         marker: "# {mark} ANSIBLE MANAGED BLOCK - CONSUL CONFIG"
 | ||
|         block: |
 | ||
|           consul {
 | ||
|             address = "{{ consul_addresses }}"
 | ||
|             server_service_name = "nomad"
 | ||
|             client_service_name = "nomad-client"
 | ||
|             auto_advertise = true
 | ||
|             server_auto_join = true
 | ||
|             client_auto_join = false
 | ||
|           }          
 | ||
|         replace: true
 | ||
|       when: is_server.stdout == "1"
 | ||
| 
 | ||
|     - name: 修正客户端节点的Consul配置
 | ||
|       blockinfile:
 | ||
|         path: /etc/nomad.d/nomad.hcl
 | ||
|         marker: "# {mark} ANSIBLE MANAGED BLOCK - CONSUL CONFIG"
 | ||
|         block: |
 | ||
|           consul {
 | ||
|             address = "{{ consul_addresses }}"
 | ||
|             server_service_name = "nomad"
 | ||
|             client_service_name = "nomad-client"
 | ||
|             auto_advertise = true
 | ||
|             server_auto_join = false
 | ||
|             client_auto_join = true
 | ||
|           }          
 | ||
|         replace: true
 | ||
|       when: is_client.stdout == "1"
 | ||
| 
 | ||
|     - name: 重启Nomad服务
 | ||
|       systemd:
 | ||
|         name: nomad
 | ||
|         state: restarted
 | ||
|         enabled: yes
 | ||
|         daemon_reload: yes
 | ||
| 
 | ||
|     - name: 等待Nomad服务启动
 | ||
|       wait_for:
 | ||
|         port: 4646
 | ||
|         host: "{{ ansible_host }}"
 | ||
|         timeout: 30
 | ||
| 
 | ||
|     - name: 显示节点角色和配置
 | ||
|       debug:
 | ||
|         msg: "节点 {{ inventory_hostname }} 是 {{ '服务器' if is_server.stdout == '1' else '客户端' }} 节点,Consul配置已更新"
 | ||
| 
 |