# clickhouse 的安装方式比较简单,只需要分ansible_distribution,
# 不需要区分详细的 ansible_distribution_major_version, 以及 ansible_architecture
# 因此简单复用。如果后续clickhouse有重大版本升级,或者对于os有不同的安装变更,此处再随之改变
- block:
- name: Import OS Specific tasks
include_tasks: "{{ item }}"
with_first_found:
- files:
- "{{ ansible_distribution | lower |replace(' ', '_')}}.yml"
- defaults.yml
paths:
- os
- name: Ensure clickhouse-server installed
package:
name: clickhouse-server
state: present
- name: Ensure clickhouse-client installed
package:
name: clickhouse-client
state: present
- name: Ensure group "clickhouse" exists
ansible.builtin.group:
name: clickhouse
state: present
- name: create clickhouse user and password in os if not present
user:
name: clickhouse
group: clickhouse
shell: /bin/false
create_home: false
state: present
- name: Mkdir for data path
ansible.builtin.file:
path: /opt/clickhouse
state: directory
owner: clickhouse
group: clickhouse
- name: Change data path
replace:
path: /etc/clickhouse-server/config.xml
regexp: 'path>/var/lib/clickhouse/'
replace: 'path>/opt/clickhouse/'
backup: yes
- name: Change default port
replace:
path: /etc/clickhouse-server/config.xml
regexp: '^ [^<>]*'
replace: ' {{ ch_port }}'
backup: yes
- name: Change clickhouse password
replace:
path: /etc/clickhouse-server/users.xml
regexp: '^\s+[^<>]*'
replace: ' {{ ch_password }}'
backup: yes
- name: Allow remote hosts connect to clickhouse (config.xml)
lineinfile:
path: /etc/clickhouse-server/config.xml
insertafter: ''
line: ' ::'
state: present
backup: yes
- name: Enlarge max mem usage (config.xml)
replace:
path: /etc/clickhouse-server/config.xml
regexp: '^\s+0\.\d+'
replace: ' 2'
backup: yes
- name: Allow remote hosts connect to clickhouse (users.xml)
replace:
path: /etc/clickhouse-server/users.xml
regexp: '::/0\n\s+'
replace: '::/0\n 0.0.0.0\n '
backup: yes
- name: Allow User can create other users and grant rights to them (users.xml)
replace:
path: /etc/clickhouse-server/users.xml
regexp: ''
replace: '1'
backup: yes
- name: Allow drop large tables (config.xml)
replace:
path: /etc/clickhouse-server/config.xml
regexp: ''
replace: '0'
- name: Allow drop large partitions (config.xml)
replace:
path: /etc/clickhouse-server/config.xml
regexp: ''
replace: '0'
- name: Set TTL of query_log (config.xml)
replace:
path: /etc/clickhouse-server/config.xml
regexp: ''
replace: '\n event_date + INTERVAL 14 DAY DELETE'
- name: Set TTL of trace_log (config.xml)
replace:
path: /etc/clickhouse-server/config.xml
regexp: ''
replace: '\n event_date + INTERVAL 14 DAY DELETE'
- name: Set TTL of query_thread_log (config.xml)
replace:
path: /etc/clickhouse-server/config.xml
regexp: ''
replace: '\n event_date + INTERVAL 14 DAY DELETE'
- name: Set TTL of query_views_log (config.xml)
replace:
path: /etc/clickhouse-server/config.xml
regexp: ''
replace: '\n event_date + INTERVAL 14 DAY DELETE'
- name: Set TTL of part_log (config.xml)
replace:
path: /etc/clickhouse-server/config.xml
regexp: ''
replace: '\n event_date + INTERVAL 14 DAY DELETE'
- name: Set TTL of metric_log (config.xml)
replace:
path: /etc/clickhouse-server/config.xml
regexp: ''
replace: '\n event_date + INTERVAL 14 DAY DELETE'
- name: Set TTL of asynchronous_metric_log (config.xml)
replace:
path: /etc/clickhouse-server/config.xml
regexp: ''
replace: '\n event_date + INTERVAL 14 DAY DELETE'
# - name: Set TTL of opentelemetry_span_log (config.xml)
# replace:
# path: /etc/clickhouse-server/config.xml
# regexp: ''
# replace: '\n event_date + INTERVAL 14 DAY DELETE'
- name: Set TTL of crash_log (config.xml)
replace:
path: /etc/clickhouse-server/config.xml
regexp: ''
replace: '\n event_date + INTERVAL 14 DAY DELETE'
- name: Set TTL of session_log (config.xml)
replace:
path: /etc/clickhouse-server/config.xml
regexp: ''
replace: '\n event_date + INTERVAL 14 DAY DELETE'
- name: restart clickhouse-server
service:
name: clickhouse-server
state: restarted
enabled: yes
become: yes
when:
- offline_data_path is defined
- offline_data_path | length > 0