Skip to content

Commit c78692b

Browse files
brazhinazat
andauthored
Add support no_restart flag for clickhouse_user_files (#33)
Fixes: #32 Co-authored-by: Azat Khuzhin <[email protected]>
1 parent d306c4e commit c78692b

File tree

8 files changed

+69
-6
lines changed

8 files changed

+69
-6
lines changed

Documentation/Advanced_Configuration.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,37 @@ $ { echo 00-ansible-role-config; echo 99-override-config; echo 9-override-config
180180

181181
</details>
182182

183+
##### User configuration files
184+
185+
You can specify additional user configuration files using the `clickhouse_user_files` variable.
186+
187+
```yaml
188+
clickhouse_user_files:
189+
- file: group_templates/clickhouse/clickhouse-server/users.d/additional_user.yml
190+
no_log: true
191+
no_restart: true
192+
```
193+
There are the following attributes supported:
194+
- `no_restart` - changes of this configuration file will not restart the clickhouse-server (i.e. due to it is known that it is applied on fly)
195+
- `no_log` - do not show diff (ansible option), see [Sensitive data in server configuration directives overrides](#sensitive-data-in-server-configuration-directives-overrides) section for more details
196+
197+
<details>
198+
199+
<summary>templates/group_templates/clickhouse/clickhouse-server/users.d/additional_user.yml.j2</summary>
200+
201+
```yaml
202+
# templates/group_templates/clickhouse/clickhouse-server/users.d/additional_user.yml.j2
203+
users:
204+
additional_user:
205+
password: user_password
206+
profile: default
207+
quota: default
208+
networks:
209+
ip: "::/0"
210+
```
211+
212+
</details>
213+
183214
##### Sensitive data in server configuration directives overrides
184215

185216
In case server or users configuration templates contains sensitive data, e. g. plain passwords,

defaults/main.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ clickhouse_quotas:
5454

5555
# List for additional user-configuration file to override or extend
5656
# variable based configuration
57+
# - no_log -- do not log the diff (ansible)
58+
# - no_restart -- assume that clickhouse-server restart is not required
5759
clickhouse_user_files: []
5860

5961
#

example/clickhouse.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,5 +58,9 @@
5858
clickhouse_online_configuration_files:
5959
- group_templates/clickhouse/clickhouse-server/config.d/remote_servers.yml
6060
- group_templates/clickhouse/clickhouse-server/config.d/zookeeper.yml
61+
clickhouse_user_files:
62+
- file: group_templates/clickhouse/clickhouse-server/users.d/additional_users.yml
63+
no_log: true
64+
no_restart: true
6165
roles:
6266
- clickhouse
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
users:
3+
additional_user:
4+
password: testpass
5+
profile: default
6+
quota: default
7+
networks:
8+
ip: "::/0"

molecule/default/inventory/group_vars/all.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ clickhouse_user_files:
4242
- users.d/01-first_test_user.yml
4343
- file: users.d/02-second_test_user.yml
4444
no_log: true
45+
- file: users.d/03-third_test_user.yml
46+
# TODO: properly test that attributes are supported
47+
no_log: false
48+
no_restart: true
4549

4650
clickhouse_configuration_files:
4751
- config.d/01-merge_tree.yml
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
users:
3+
third_test_user:
4+
password: testpass
5+
networks:
6+
ip: "::/0"

molecule/default/verify.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
# All configured users created
1111
- query: select count() from system.users
12-
result: 4
12+
result: 5
1313

1414
# Profile applied to user
1515
- query: >

tasks/pre_configure.yml

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -163,10 +163,9 @@
163163
set_fact:
164164
_user_configs: "{{
165165
_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]
166+
[{'file': item.file, 'no_log': item.no_log | default(False), 'no_restart': item.no_restart | default(False)}],
167+
[{'file': item, 'no_log': False, 'no_restart': False}]
168+
)) }}" # noqa: jinja[spacing]
170169
loop: "{{ common_user_configs + clickhouse_user_files | default([]) }}"
171170
- name: Deploy clickhouse-server users overrides (requires restart)
172171
template:
@@ -177,7 +176,16 @@
177176
mode: "u=r,go="
178177
notify: restart-clickhouse
179178
no_log: "{{ item.no_log }}"
180-
loop: "{{ _user_configs }}"
179+
loop: "{{ _user_configs | selectattr('no_restart', 'eq', False) }}"
180+
- name: Deploy clickhouse-server users overrides (without restart)
181+
template:
182+
src: "{{ (item is mapping) | ternary(item.file, item) }}.j2"
183+
dest: "/etc/clickhouse-server/users.d/{{ (item is mapping) | ternary(item.file, item) | basename }}"
184+
owner: clickhouse
185+
group: clickhouse
186+
mode: "u=r,go="
187+
no_log: "{{ item.no_log }}"
188+
loop: "{{ _user_configs | selectattr('no_restart', 'eq', True) }}"
181189
- name: Deploy dictionaries configuration (requires restart)
182190
template:
183191
src: "{{ item }}.j2"

0 commit comments

Comments
 (0)