feat(ansible): Consul upgrade
[csit.git] / fdio.infra.ansible / roles / consul / tasks / main.yaml
1 ---
2 # file: tasks/main.yaml
3
4 - name: Update Repositories Cache
5   ansible.builtin.apt:
6     update_cache: true
7   when:
8     - ansible_os_family == 'Debian'
9   tags:
10     - consul-inst-package
11
12 - name: Dependencies
13   ansible.builtin.apt:
14     name: "{{ packages | flatten(levels=1) }}"
15     state: "present"
16     cache_valid_time: 3600
17     install_recommends: false
18   when:
19     - ansible_os_family == 'Debian'
20   tags:
21     - consul-inst-dependencies
22
23 - name: Add Consul Group
24   ansible.builtin.group:
25     name: "{{ consul_group }}"
26     state: "present"
27   tags:
28     - consul-conf-user
29
30 - name: Add Consul user
31   ansible.builtin.user:
32     name: "{{ consul_user }}"
33     group: "{{ consul_group }}"
34     state: "present"
35     system: true
36   tags:
37     - consul-conf-user
38
39 - name: Download Consul
40   ansible.builtin.get_url:
41     url: "{{ consul_zip_url }}"
42     dest: "{{ consul_inst_dir }}/{{ consul_pkg }}"
43   tags:
44     - consul-inst-package
45
46 - name: Clean Consul
47   ansible.builtin.file:
48     path: "{{ consul_inst_dir }}/consul"
49     state: "absent"
50   when:
51     - consul_force_update | bool
52   tags:
53     - consul-inst-package
54
55 - name: Unarchive Consul
56   ansible.builtin.unarchive:
57     src: "{{ consul_inst_dir }}/{{ consul_pkg }}"
58     dest: "{{ consul_inst_dir }}/"
59     remote_src: true
60   tags:
61     - consul-inst-package
62
63 - name: Consul
64   ansible.builtin.copy:
65     src: "{{ consul_inst_dir }}/consul"
66     dest: "{{ consul_bin_dir }}"
67     owner: "{{ consul_user }}"
68     group: "{{ consul_group }}"
69     force: true
70     mode: 0755
71     remote_src: true
72   tags:
73     - consul-inst-package
74
75 - name: Create Directories
76   ansible.builtin.file:
77     dest: "{{ item }}"
78     state: "directory"
79     owner: "{{ consul_user }}"
80     group: "{{ consul_group }}"
81     mode: 0755
82   with_items:
83     - "{{ consul_data_dir }}"
84     - "{{ nomad_config_dir }}"
85     - "{{ nomad_ssl_dir }}"
86   tags:
87     - consul-conf
88
89 - name: Base Configuration
90   ansible.builtin.template:
91     src: "{{ item }}.hcl.j2"
92     dest: "{{ consul_config_dir }}/{{ item }}.hcl"
93     owner: "{{ consul_user }}"
94     group: "{{ consul_group }}"
95     mode: 0644
96   with_items:
97     - "base"
98     - "ports"
99     - "telemetry"
100   tags:
101     - consul-conf
102
103 - name: Copy Certificates And Keys
104   ansible.builtin.copy:
105     content: "{{ item.src }}"
106     dest: "{{ item.dest }}"
107     owner: "{{ consul_user }}"
108     group: "{{ consul_group }}"
109     mode: 0600
110   no_log: true
111   loop: "{{ consul_certificates | flatten(levels=1) }}"
112   when:
113     - consul_certificates is defined
114   tags:
115     - consul-conf
116
117 - name: Stop Systemd-resolved
118   ansible.builtin.systemd:
119     daemon_reload: true
120     enabled: false
121     name: "systemd-resolved"
122     state: "{{ systemd_resolved_state }}"
123   when:
124     - consul_service_mgr == "systemd"
125   tags:
126     - consul-conf
127
128 - name: System.d Script
129   ansible.builtin.template:
130     src: "consul_systemd.service.j2"
131     dest: "/lib/systemd/system/consul.service"
132     owner: "root"
133     group: "root"
134     mode: 0644
135   notify:
136     - "Restart Consul"
137   when:
138     - consul_service_mgr == "systemd"
139   tags:
140     - consul-conf
141
142 - name: Flush handlers
143   ansible.builtin.meta: flush_handlers