Private
Public Access
2
0

First commit

This commit is contained in:
2026-01-07 14:27:55 +03:00
commit 0ffc9385c3
47 changed files with 11658 additions and 0 deletions

View File

@@ -0,0 +1,14 @@
# Required
consul_datacenter: null
consul_secret_key: null
consul_nodes: []
consul_domain: None
# Defaults
consul_version: "1.22.2"
consul_key_file: "/etc/ssl/private/local.key"
consul_cert_file: "/etc/ssl/certs/local.crt"
consul_ca_file: "/etc/ssl/certs/local-ca.crt"
consul_client_addr: "0.0.0.0"
consul_bind_addr: "{{ ansible_default_ipv4.address }}"
consul_advertise_addr: "{{ ansible_default_ipv4.address }}"

View File

@@ -0,0 +1,10 @@
- name: Restart Consul
ansible.builtin.service:
name: "consul"
state: "restarted"
daemon_reload: true
- name: Reload Consul
ansible.builtin.service:
name: "consul"
state: "reloaded"

View File

@@ -0,0 +1,78 @@
- 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:
- "Reload 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

View File

@@ -0,0 +1,26 @@
{
"log_level": "INFO",
"node_name": "{{ ansible_hostname }}",
"domain": "{{ consul_domain }}",
"server": true,
"key_file": "{{ consul_key_file }}",
"cert_file": "{{ consul_cert_file }}",
"ca_file": "{{ consul_ca_file }}",
"verify_incoming": true,
"verify_outgoing": true,
"verify_server_hostname": true,
"encrypt": "{{ consul_secret_key }}",
"ui": true,
"leave_on_terminate": true,
"data_dir": "/opt/consul",
"datacenter": "{{ consul_datacenter | mandatory }}",
"client_addr": "{{ consul_client_addr }}",
"bind_addr": "{{ consul_bind_addr }}",
"advertise_addr": "{{ consul_advertise_addr }}",
"bootstrap_expect": {{ consul_nodes | length }},
"retry_join": ["{{ consul_nodes | join('", "') }}"],
"enable_syslog": true,
"performance": {
"raft_multiplier": 1
}
}

View File

@@ -0,0 +1,19 @@
[Unit]
Description="HashiCorp Consul - A service mesh solution"
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target
ConditionFileNotEmpty=/etc/consul/config.json
[Service]
Type=notify
User=consul
Group=consul
ExecStart=/usr/local/bin/consul agent -config-file=/etc/consul/config.json
ExecReload=/usr/local/bin/consul reload
KillMode=process
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target