57 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
---
 | 
						|
- name: 批量部署Consul配置到所有节点
 | 
						|
  hosts: all
 | 
						|
  become: yes
 | 
						|
  serial: 8  # 并行处理8个节点
 | 
						|
  
 | 
						|
  vars:
 | 
						|
    consul_config_dir: "/etc/consul.d"
 | 
						|
    consul_service_name: "consul"
 | 
						|
    
 | 
						|
  tasks:
 | 
						|
    - name: 检查节点类型
 | 
						|
      set_fact:
 | 
						|
        node_type: "{{ 'server' if inventory_hostname in ['ch4', 'ash3c', 'warden'] else 'client' }}"
 | 
						|
        ui_enabled: "{{ 'true' if inventory_hostname in ['ch4', 'ash3c', 'warden'] else 'false' }}"
 | 
						|
        node_zone: "{{ 'server' if inventory_hostname in ['ch4', 'ash3c', 'warden'] else 'client' }}"
 | 
						|
    
 | 
						|
    - name: 生成Consul配置文件
 | 
						|
      template:
 | 
						|
        src: consul.j2
 | 
						|
        dest: "{{ consul_config_dir }}/consul.hcl"
 | 
						|
        owner: consul
 | 
						|
        group: consul
 | 
						|
        mode: '0644'
 | 
						|
        backup: yes
 | 
						|
      vars:
 | 
						|
        node_name: "{{ inventory_hostname }}"
 | 
						|
        bind_addr: "{{ ansible_host }}"
 | 
						|
        node_zone: "{{ node_zone }}"
 | 
						|
        ui_enabled: "{{ ui_enabled }}"
 | 
						|
    
 | 
						|
    - name: 验证Consul配置文件
 | 
						|
      command: consul validate {{ consul_config_dir }}/consul.hcl
 | 
						|
      register: consul_validate
 | 
						|
      failed_when: consul_validate.rc != 0
 | 
						|
    
 | 
						|
    - name: 重启Consul服务
 | 
						|
      systemd:
 | 
						|
        name: "{{ consul_service_name }}"
 | 
						|
        state: restarted
 | 
						|
        enabled: yes
 | 
						|
    
 | 
						|
    - name: 等待Consul服务启动
 | 
						|
      wait_for:
 | 
						|
        port: 8500
 | 
						|
        host: "{{ ansible_host }}"
 | 
						|
        timeout: 30
 | 
						|
    
 | 
						|
    - name: 检查Consul服务状态
 | 
						|
      systemd:
 | 
						|
        name: "{{ consul_service_name }}"
 | 
						|
      register: consul_status
 | 
						|
    
 | 
						|
    - name: 显示部署结果
 | 
						|
      debug:
 | 
						|
        msg: "{{ inventory_hostname }} ({{ node_type }}) Consul服务状态: {{ consul_status.status.ActiveState }}"
 |