|
106 | 106 | - name: Install attributes for the configuration files
|
107 | 107 | no_log: true
|
108 | 108 | vars:
|
109 |
| - common: |
| 109 | + common_server_configs: |
110 | 110 | # NOTE: role has "00-" prefix to give this override lowest priority
|
111 | 111 | - clickhouse-server/config.d/00-logger.yml
|
112 | 112 | - clickhouse-server/config.d/00-system_log.yml
|
|
131 | 131 | - file: clickhouse-server/config.d/00-memory.yml
|
132 | 132 | no_restart: true
|
133 | 133 | set_fact:
|
134 |
| - _configs: "{{ _configs | default([]) + ((item is mapping) | ternary( |
| 134 | + _server_configs: "{{ _server_configs | default([]) + ((item is mapping) | ternary( |
135 | 135 | [{'file': item.file, 'no_log': item.no_log | default(False), 'no_restart': item.no_restart | default(False)}],
|
136 | 136 | [{'file': item, 'no_log': False, 'no_restart': False}]
|
137 | 137 | )) }}" # noqa: jinja[spacing]
|
138 |
| - loop: "{{ common + clickhouse_configuration_files + _config_no_restart | default([]) }}" |
| 138 | + loop: "{{ common_server_configs + clickhouse_configuration_files + _config_no_restart | default([]) }}" |
139 | 139 | - name: Deploy clickhouse-server config overrides (requires restart)
|
140 | 140 | template:
|
141 | 141 | src: "{{ item.file }}.j2"
|
|
145 | 145 | mode: "u=r,go="
|
146 | 146 | notify: restart-clickhouse
|
147 | 147 | no_log: "{{ item.no_log }}"
|
148 |
| - loop: "{{ _configs | selectattr('no_restart', 'eq', False) }}" |
| 148 | + loop: "{{ _server_configs | selectattr('no_restart', 'eq', False) }}" |
149 | 149 | - name: Deploy clickhouse-server config overrides (without restart)
|
150 | 150 | template:
|
151 | 151 | src: "{{ item.file }}.j2"
|
|
154 | 154 | group: clickhouse
|
155 | 155 | mode: "u=r,go="
|
156 | 156 | no_log: "{{ item.no_log }}"
|
157 |
| - loop: "{{ _configs | selectattr('no_restart', 'eq', True) }}" |
158 |
| - - name: Deploy role default clickhouse-server users overrides (requires restart) |
159 |
| - template: |
160 |
| - src: "{{ item }}.j2" |
161 |
| - dest: "/etc/clickhouse-server/users.d/{{ item | basename }}" |
162 |
| - owner: clickhouse |
163 |
| - group: clickhouse |
164 |
| - mode: "u=r,go=" |
165 |
| - notify: restart-clickhouse |
166 |
| - loop: |
167 |
| - - clickhouse-server/users.d/00-overrides.yml |
168 |
| - - name: Deploy user provided clickhouse-server users overrides (requires restart) |
| 157 | + loop: "{{ _server_configs | selectattr('no_restart', 'eq', True) }}" |
| 158 | + - name: Set attributes for user configuration files |
| 159 | + no_log: true |
| 160 | + vars: |
| 161 | + common_user_configs: |
| 162 | + - clickhouse-server/users.d/00-overrides.yml |
| 163 | + set_fact: |
| 164 | + _user_configs: "{{ |
| 165 | + _user_configs | default([]) + ((item is mapping) | ternary( |
| 166 | + [{'file': item.file, 'no_log': item.no_log | default(False)}], |
| 167 | + [{'file': item, 'no_log': False}] |
| 168 | + )) |
| 169 | + }}" # noqa: jinja[spacing] |
| 170 | + loop: "{{ common_user_configs + clickhouse_user_files | default([]) }}" |
| 171 | + - name: Deploy clickhouse-server users overrides (requires restart) |
169 | 172 | template:
|
170 | 173 | src: "{{ (item is mapping) | ternary(item.file, item) }}.j2"
|
171 | 174 | dest: "/etc/clickhouse-server/users.d/{{ (item is mapping) | ternary(item.file, item) | basename }}"
|
172 | 175 | owner: clickhouse
|
173 | 176 | group: clickhouse
|
174 | 177 | mode: "u=r,go="
|
175 | 178 | notify: restart-clickhouse
|
176 |
| - no_log: "{{ (item is mapping) | ternary(item.no_log, False) }}" |
177 |
| - loop: "{{ clickhouse_user_files }}" |
| 179 | + no_log: "{{ item.no_log }}" |
| 180 | + loop: "{{ _user_configs }}" |
178 | 181 | - name: Deploy dictionaries configuration (requires restart)
|
179 | 182 | template:
|
180 | 183 | src: "{{ item }}.j2"
|
|
185 | 188 | loop: "{{ clickhouse_dictionaries_config_files }}"
|
186 | 189 | notify: restart-clickhouse
|
187 | 190 |
|
| 191 | +- name: Cleanup stale server configuration files |
| 192 | + when: clickhouse_setup == "full" |
| 193 | + include_tasks: ./helpers/cleanup_stale_files.yml |
| 194 | + with_items: |
| 195 | + - cleanup_directory: /etc/clickhouse-server/config.d |
| 196 | + expected_files: "{{ _server_configs | map(attribute='file') | map('basename') }}" |
| 197 | + pattern: "*.yml" |
| 198 | + restart: true |
| 199 | + - cleanup_directory: /etc/clickhouse-server/users.d |
| 200 | + expected_files: "{{ _user_configs | map(attribute='file') | map('basename') }}" |
| 201 | + pattern: "*.yml" |
| 202 | + restart: true |
| 203 | + - cleanup_directory: "{{ clickhouse_dictionaries_config_path }}" |
| 204 | + expected_files: "{{ clickhouse_dictionaries_config_files | map('basename') }}" |
| 205 | + pattern: "*" |
| 206 | + restart: true |
| 207 | + |
188 | 208 | # format_schemas and top_level_domains by default are created by server process
|
189 | 209 | # according to `umask` server configuration parameter.
|
190 | 210 | # The role follows default ClickHouse umask value and gives full permissions to
|
|
223 | 243 | notify: restart-clickhouse
|
224 | 244 | loop: "{{ clickhouse_format_schema_files }}"
|
225 | 245 |
|
| 246 | +- name: Cleanup stale user files |
| 247 | + when: clickhouse_setup == "full" |
| 248 | + include_tasks: ./helpers/cleanup_stale_files.yml |
| 249 | + with_items: |
| 250 | + - cleanup_directory: "{{ clickhouse_top_level_domains_path }}" |
| 251 | + expected_files: "{{ clickhouse_top_level_domains_lists_files | map('basename') }}" |
| 252 | + pattern: "*" |
| 253 | + restart: true |
| 254 | + - cleanup_directory: "{{ clickhouse_format_schema_path }}" |
| 255 | + expected_files: "{{ clickhouse_format_schema_files | map('basename') }}" |
| 256 | + pattern: "*" |
| 257 | + restart: true |
| 258 | + |
226 | 259 | - name: Create clickhouse-server additional data directories
|
227 | 260 | file:
|
228 | 261 | dest: "{{ item.path }}"
|
|
269 | 302 | group: root
|
270 | 303 | loop:
|
271 | 304 | - clickhouse-client/config.xml
|
| 305 | + - name: Cleanup stale format schemas |
| 306 | + include_tasks: ./helpers/cleanup_stale_files.yml |
| 307 | + with_items: |
| 308 | + - cleanup_directory: /etc/clickhouse-client/format_schemas |
| 309 | + expected_files: "{{ clickhouse_format_schema_files | map('basename') }}" |
| 310 | + pattern: "*" |
| 311 | + restart: false |
0 commit comments