Private
Public Access
2
0
This commit is contained in:
2026-01-20 17:40:16 +03:00
parent cda556eec6
commit b78da80550
83 changed files with 108 additions and 82 deletions

131
roles/consul/tasks/main.yml Normal file
View File

@@ -0,0 +1,131 @@
- name: Install requirements
ansible.builtin.apt:
name:
- "unzip"
# Not required for Ubuntu 24, was a test for Debian 13
- name: Disable IPv6 on all interfaces
ansible.posix.sysctl:
name: "net.ipv6.conf.all.disable_ipv6"
value: "1"
sysctl_set: true
- 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:
- "Restart Consul"
- 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
# consul acl bootstrap -format=json
# {
# "CreateIndex": 1042,
# "ModifyIndex": 1042,
# "AccessorID": "50f8bfb6-b259-4c08-f9aa-2dc0eeb08e99",
# "SecretID": "b7f16a8a-0b4f-4661-fea2-f79d95dd011b",
# "Description": "Bootstrap Token (Global Management)",
# "Policies": [
# {
# "ID": "00000000-0000-0000-0000-000000000001",
# "Name": "global-management"
# }
# ],
# "Local": false,
# "CreateTime": "2026-01-19T18:41:13.294800712+03:00",
# "Hash": "X2AgaFhnQGRhSSF/h0m6qpX1wj/HJWbyXcxkEM/5GrY="
# }
- 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 }}"