--- - 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 }}"