mgmt/infrastructure/consul/deploy-consul-ansible.yml

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