Skip to content
This repository has been archived by the owner on Jun 24, 2021. It is now read-only.

Commit

Permalink
Check config before deploy or rolling_update (#917) (#934)
Browse files Browse the repository at this point in the history
  • Loading branch information
liubo0127 committed Sep 6, 2019
1 parent dff1fd0 commit b53c9f8
Show file tree
Hide file tree
Showing 7 changed files with 169 additions and 0 deletions.
7 changes: 7 additions & 0 deletions deploy.yml
Expand Up @@ -38,6 +38,13 @@
roles:
- check_config_dynamic

- name: Pre-check for configuration
hosts: pd_servers[0]
tags:
- check_config
roles:
- check_config

- name: deploying node_exporter
hosts: monitored_servers
tags:
Expand Down
7 changes: 7 additions & 0 deletions excessive_rolling_update.yml
Expand Up @@ -54,6 +54,13 @@
- current_version.stdout_lines[0].replace(' ','').split(':')[1] < "v2.0.1"
- tidb_version >= "v2.1.0" or tidb_version == "latest"

- name: Pre-check for configuration
hosts: pd_servers[0]
tags:
- check_config
roles:
- check_config

- hosts: pd_servers[0]
any_errors_fatal: true
serial: 1
Expand Down
43 changes: 43 additions & 0 deletions roles/check_config/tasks/check_pd_config.yml
@@ -0,0 +1,43 @@
---

- name: Load PD vars
include_vars: file={{ playbook_dir }}/roles/pd/defaults/main.yml

- name: "Load customized config: tidb-ansible/conf/pd.yml"
include_vars: file={{ playbook_dir }}/conf/pd.yml name=pd_conf_custom

- name: Load default config
include_vars: file={{ playbook_dir }}/roles/pd/vars/default.yml name=pd_conf_default

- name: Generate dynamic config
set_fact:
pd_conf_generated:
replication:
location-labels: "{{ location_labels }}"
security:
cacert-path: >-
{%- if enable_tls|default(false) -%}{{ pd_cert_dir }}/ca.pem{%- else -%}{%- endif -%}
cert-path: >-
{%- if enable_tls|default(false) -%}{{ pd_cert_dir }}/pd-server-{{ pd_host }}.pem{%- else -%}{%- endif -%}
key-path: >-
{%- if enable_tls|default(false) -%}{{ pd_cert_dir }}/pd-server-{{ pd_host }}-key.pem{%- else -%}{%- endif -%}
- name: Generate final config
set_fact:
pd_conf: "{{ pd_conf_custom | with_default_dicts(pd_conf_generated, pd_conf_default) }}"

- name: Create configuration file
template: src={{ playbook_dir }}/roles/pd/templates/pd.toml.j2 dest={{ tidb_check_dir }}/pd.toml mode=0644 backup=yes
register: pd_conf_st

- name: Deploy PD binary
copy: src="{{ resources_dir }}/bin/pd-server" dest="{{ tidb_check_dir }}/" mode=0755 backup=yes

- name: Check PD config
shell: cd {{ tidb_check_dir }} && ./pd-server -config ./pd.toml -config-check
register: pd_check_result

- name: Check result
fail:
msg: "PD config error"
when: "'successful' not in pd_check_result.stdout"
40 changes: 40 additions & 0 deletions roles/check_config/tasks/check_tidb_config.yml
@@ -0,0 +1,40 @@
---

- name: Load TiDB vars
include_vars: file={{ playbook_dir }}/roles/tidb/defaults/main.yml

- name: "Load customized config: tidb-ansible/conf/tidb.yml"
include_vars: file={{ playbook_dir }}/conf/tidb.yml name=tidb_conf_custom

- name: Load default config
include_vars: file={{ playbook_dir }}/roles/tidb/vars/default.yml name=tidb_conf_default

- name: generate dynamic config
set_fact:
tidb_conf_generated:
security:
cluster-ssl-ca: >-
{%- if enable_tls|default(false) -%}{{ tidb_cert_dir }}/ca.pem{%- else -%}{%- endif -%}
cluster-ssl-cert: >-
{%- if enable_tls|default(false) -%}{{ tidb_cert_dir }}/tidb-server-{{ tidb_host }}.pem{%- else -%}{%- endif -%}
cluster-ssl-key: >-
{%- if enable_tls|default(false) -%}{{ tidb_cert_dir }}/tidb-server-{{ tidb_host }}-key.pem{%- else -%}{%- endif -%}
- name: Generate final config
set_fact:
tidb_conf: "{{ tidb_conf_custom | with_default_dicts(tidb_conf_generated, tidb_conf_default) }}"

- name: Create configuration file
template: src={{ playbook_dir }}/roles/tidb/templates/tidb.toml.j2 dest={{ tidb_check_dir }}/tidb.toml mode=0644 backup=yes

- name: Deploy TiDB binary
copy: src="{{ resources_dir }}/bin/tidb-server" dest="{{ tidb_check_dir }}/" mode=0755 backup=yes

- name: Check TiDB config
shell: cd {{ tidb_check_dir }} && ./tidb-server -config ./tidb.toml -config-check
register: tidb_check_result

- name: Check result
fail:
msg: "TiDB config error"
when: "'successful' not in tidb_check_result.stdout"
46 changes: 46 additions & 0 deletions roles/check_config/tasks/check_tikv_config.yml
@@ -0,0 +1,46 @@
---

- name: Load TiKV vars
include_vars: file={{ playbook_dir }}/roles/tikv/defaults/main.yml

- name: "Load customized config: tidb-ansible/conf/tikv.yml"
include_vars: file={{ playbook_dir }}/conf/tikv.yml name=tikv_conf_custom

- name: Load default config
include_vars: file={{ playbook_dir }}/roles/tikv/vars/default.yml name=tikv_conf_default

- name: generate dynamic config
set_fact:
tikv_conf_generated:
server:
labels: "{{ labels }}"
rocksdb:
wal-dir: "{{ wal_dir }}"
raftstore:
raftdb-path: "{{ raftdb_path }}"
security:
ca-path: >-
{%- if enable_tls|default(false) -%}{{ tikv_cert_dir }}/ca.pem{%- else -%}{%- endif -%}
cert-path: >-
{%- if enable_tls|default(false) -%}{{ tikv_cert_dir }}/tikv-server-{{ tikv_host }}.pem{%- else -%}{%- endif -%}
key-path: >-
{%- if enable_tls|default(false) -%}{{ tikv_cert_dir }}/tikv-server-{{ tikv_host }}-key.pem{%- else -%}{%- endif -%}
- name: Generate final config
set_fact:
tikv_conf: "{{ tikv_conf_custom | with_default_dicts(tikv_conf_generated, tikv_conf_default) }}"

- name: Create configuration file
template: src={{ playbook_dir }}/roles/tikv/templates/tikv.toml.j2 dest={{ tidb_check_dir }}/tikv.toml mode=0644 backup=yes

- name: Deploy TiKV binary
copy: src="{{ resources_dir }}/bin/tikv-server" dest="{{ tidb_check_dir }}/" mode=0755 backup=yes

- name: Check TiKV config
shell: cd {{ tidb_check_dir }} && ./tikv-server --pd-endpoints pd:port --config ./tikv.toml --config-check
register: tikv_check_result

- name: Check result
fail:
msg: "TiKV config error"
when: "'successful' not in tikv_check_result.stdout"
19 changes: 19 additions & 0 deletions roles/check_config/tasks/main.yml
@@ -0,0 +1,19 @@
---

- set_fact:
tidb_check_dir: "/tmp/tidb_check_config"

- name: Create temporary check directory
file: name={{ tidb_check_dir }} state=directory

- name: Check PD config
include_tasks: check_pd_config.yml

- name: Check TiKV config
include_tasks: check_tikv_config.yml

- name: Check TiDB config
include_tasks: check_tidb_config.yml

- name: Delete temporary check directory
file: name={{ tidb_check_dir }} state=absent
7 changes: 7 additions & 0 deletions rolling_update.yml
Expand Up @@ -54,6 +54,13 @@
- current_version.stdout_lines[0].replace(' ','').split(':')[1] < "v2.0.1"
- tidb_version >= "v2.1.0" or tidb_version == "latest"

- name: Pre-check for configuration
hosts: pd_servers[0]
tags:
- check_config
roles:
- check_config

- hosts: pd_servers[0]
any_errors_fatal: true
serial: 1
Expand Down

0 comments on commit b53c9f8

Please sign in to comment.