Add Consul role - main.yml
This commit is contained in:
@@ -0,0 +1,104 @@
|
|||||||
|
---
|
||||||
|
- name: Install dependencies
|
||||||
|
apt:
|
||||||
|
name:
|
||||||
|
- curl
|
||||||
|
- gnupg
|
||||||
|
- lsb-release
|
||||||
|
state: present
|
||||||
|
update_cache: yes
|
||||||
|
|
||||||
|
- name: Add HashiCorp GPG key
|
||||||
|
apt_key:
|
||||||
|
url: https://apt.releases.hashicorp.com/gpg
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Add HashiCorp repository
|
||||||
|
apt_repository:
|
||||||
|
repo: "deb [arch=amd64] https://apt.releases.hashicorp.com {{ ansible_distribution_release }} main"
|
||||||
|
state: present
|
||||||
|
filename: hashicorp
|
||||||
|
|
||||||
|
- name: Install Consul
|
||||||
|
apt:
|
||||||
|
name: "consul={{ consul_version }}-1"
|
||||||
|
state: present
|
||||||
|
update_cache: yes
|
||||||
|
|
||||||
|
- name: Create Consul data directory
|
||||||
|
file:
|
||||||
|
path: "{{ consul_data_dir }}"
|
||||||
|
state: directory
|
||||||
|
owner: consul
|
||||||
|
group: consul
|
||||||
|
mode: '0755'
|
||||||
|
|
||||||
|
- name: Create Consul config directory
|
||||||
|
file:
|
||||||
|
path: "{{ consul_config_dir }}"
|
||||||
|
state: directory
|
||||||
|
owner: consul
|
||||||
|
group: consul
|
||||||
|
mode: '0755'
|
||||||
|
|
||||||
|
- name: Generate encryption key if not provided
|
||||||
|
command: consul keygen
|
||||||
|
register: consul_generated_key
|
||||||
|
when: consul_encrypt_key == "" and consul_server
|
||||||
|
run_once: true
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: Set encryption key fact
|
||||||
|
set_fact:
|
||||||
|
consul_encrypt_key: "{{ consul_generated_key.stdout }}"
|
||||||
|
when: consul_encrypt_key == "" and consul_generated_key.stdout is defined
|
||||||
|
run_once: true
|
||||||
|
|
||||||
|
- name: Deploy Consul configuration
|
||||||
|
template:
|
||||||
|
src: consul.hcl.j2
|
||||||
|
dest: "{{ consul_config_dir }}/consul.hcl"
|
||||||
|
owner: consul
|
||||||
|
group: consul
|
||||||
|
mode: '0640'
|
||||||
|
notify: Restart Consul
|
||||||
|
|
||||||
|
- name: Deploy server configuration
|
||||||
|
template:
|
||||||
|
src: server.hcl.j2
|
||||||
|
dest: "{{ consul_config_dir }}/server.hcl"
|
||||||
|
owner: consul
|
||||||
|
group: consul
|
||||||
|
mode: '0640'
|
||||||
|
when: consul_server
|
||||||
|
notify: Restart Consul
|
||||||
|
|
||||||
|
- name: Remove server config on clients
|
||||||
|
file:
|
||||||
|
path: "{{ consul_config_dir }}/server.hcl"
|
||||||
|
state: absent
|
||||||
|
when: not consul_server
|
||||||
|
notify: Restart Consul
|
||||||
|
|
||||||
|
- name: Enable and start Consul service
|
||||||
|
systemd:
|
||||||
|
name: consul
|
||||||
|
enabled: yes
|
||||||
|
state: started
|
||||||
|
daemon_reload: yes
|
||||||
|
|
||||||
|
- name: Wait for Consul to be ready
|
||||||
|
uri:
|
||||||
|
url: "http://127.0.0.1:8500/v1/status/leader"
|
||||||
|
method: GET
|
||||||
|
register: consul_leader
|
||||||
|
until: consul_leader.status == 200
|
||||||
|
retries: 30
|
||||||
|
delay: 2
|
||||||
|
when: consul_server
|
||||||
|
|
||||||
|
- name: Display Consul encryption key
|
||||||
|
debug:
|
||||||
|
msg: "Consul encryption key: {{ consul_encrypt_key }}"
|
||||||
|
when: consul_server and consul_encrypt_key != ""
|
||||||
|
run_once: true
|
||||||
Reference in New Issue
Block a user