2026-01-07 14:27:55 +03:00
|
|
|
- name: Install requirements
|
|
|
|
|
ansible.builtin.apt:
|
|
|
|
|
name:
|
|
|
|
|
- "unzip"
|
|
|
|
|
|
|
|
|
|
- name: Create Consul directory
|
|
|
|
|
ansible.builtin.file:
|
|
|
|
|
path: "/usr/local/consul-{{ consul_version }}"
|
|
|
|
|
state: "directory"
|
|
|
|
|
mode: "0755"
|
|
|
|
|
|
|
|
|
|
- name: Install Consul
|
|
|
|
|
ansible.builtin.unarchive:
|
|
|
|
|
src: "https://releases.hashicorp.com/consul/{{ consul_version }}/consul_{{ consul_version }}_linux_amd64.zip"
|
|
|
|
|
dest: "/usr/local/consul-{{ consul_version }}"
|
|
|
|
|
remote_src: true
|
|
|
|
|
notify:
|
|
|
|
|
- "Restart Consul"
|
|
|
|
|
|
|
|
|
|
- name: Link Consul
|
|
|
|
|
ansible.builtin.file:
|
|
|
|
|
src: "/usr/local/consul-{{ consul_version }}/consul"
|
|
|
|
|
dest: "/usr/local/bin/consul"
|
|
|
|
|
state: "link"
|
|
|
|
|
notify:
|
|
|
|
|
- "Restart Consul"
|
|
|
|
|
|
|
|
|
|
- name: Create consul system group
|
|
|
|
|
ansible.builtin.group:
|
|
|
|
|
name: "consul"
|
|
|
|
|
system: true
|
|
|
|
|
|
|
|
|
|
- name: Create consul system user
|
|
|
|
|
ansible.builtin.user:
|
|
|
|
|
name: "consul"
|
|
|
|
|
group: "consul"
|
|
|
|
|
groups: ["ssl-cert"]
|
|
|
|
|
password: "!"
|
|
|
|
|
system: true
|
|
|
|
|
home: "/opt/consul"
|
|
|
|
|
|
|
|
|
|
- name: Create consul config directory
|
|
|
|
|
ansible.builtin.file:
|
|
|
|
|
path: "/etc/consul"
|
|
|
|
|
state: "directory"
|
|
|
|
|
group: "consul"
|
|
|
|
|
mode: "0750"
|
|
|
|
|
|
|
|
|
|
- name: Create consul log dir
|
|
|
|
|
ansible.builtin.file:
|
|
|
|
|
path: "/var/log/consul"
|
|
|
|
|
state: "directory"
|
|
|
|
|
group: "consul"
|
|
|
|
|
mode: "0770"
|
|
|
|
|
|
|
|
|
|
- name: Generate Consul config
|
|
|
|
|
ansible.builtin.template:
|
|
|
|
|
src: "templates/config.json"
|
|
|
|
|
dest: "/etc/consul/config.json"
|
|
|
|
|
group: "consul"
|
|
|
|
|
mode: "0640"
|
|
|
|
|
notify:
|
2026-01-19 15:06:34 +03:00
|
|
|
- "Restart Consul"
|
2026-01-07 14:27:55 +03:00
|
|
|
|
|
|
|
|
- name: Deploy Consul service file
|
|
|
|
|
ansible.builtin.template:
|
|
|
|
|
src: "templates/consul.service"
|
|
|
|
|
dest: "/etc/systemd/system/consul.service"
|
|
|
|
|
mode: "0644"
|
|
|
|
|
notify:
|
|
|
|
|
- "Restart Consul"
|
|
|
|
|
|
|
|
|
|
- name: Enable and start Consul
|
|
|
|
|
ansible.builtin.service:
|
|
|
|
|
name: "consul"
|
|
|
|
|
state: "started"
|
|
|
|
|
enabled: true
|
|
|
|
|
daemon_reload: true
|
2026-01-19 15:06:34 +03:00
|
|
|
|
|
|
|
|
- name: Register services to consul
|
|
|
|
|
loop: "{{ consul_services }}"
|
|
|
|
|
community.general.consul_agent_service:
|
|
|
|
|
name: "{{ item.name }}"
|
|
|
|
|
service_port: "{{ item.port }}"
|
|
|
|
|
tags: ="{{ item.tags | default([]) }}"
|
|
|
|
|
|
|
|
|
|
- name: Register HTTP checks to consul
|
|
|
|
|
loop: "{{ consul_services }}"
|
|
|
|
|
when: "item.check_http | default(None) != None"
|
|
|
|
|
community.general.consul_agent_check:
|
|
|
|
|
name: "{{ item.name }}_check"
|
|
|
|
|
service_id: "{{ item.name }}"
|
|
|
|
|
interval: "{{ item.check_interval | default(consul_default_check_interval) }}"
|
|
|
|
|
timeout: "{{ item.check_timeout | default(consul_default_check_timeout) }}"
|
|
|
|
|
http: "{{ item.check_http }}"
|
|
|
|
|
scheme: "{{ item.check_scheme | default('http') }}"
|
|
|
|
|
|
|
|
|
|
- name: Register TCP checks to consul
|
|
|
|
|
loop: "{{ consul_services }}"
|
|
|
|
|
when: "item.check_tcp | default(None) != None"
|
|
|
|
|
community.general.consul_agent_check:
|
|
|
|
|
name: "{{ item.name }}_check"
|
|
|
|
|
service_id: "{{ item.name }}"
|
|
|
|
|
interval: "{{ item.check_interval | default(consul_default_check_interval) }}"
|
|
|
|
|
timeout: "{{ item.check_timeout | default(consul_default_check_timeout) }}"
|
|
|
|
|
tcp: "{{ item.check_tcp }}"
|