Skip to content

Commit

Permalink
Merge pull request #15 from Oefenweb/ANSPB-354-adjust-ansible-percona…
Browse files Browse the repository at this point in the history
…-server-

WIP - Adjust role to be 5.7 compatible
  • Loading branch information
tersmitten committed Jan 15, 2019
2 parents 5d2d80b + fa5a676 commit 5139fd8
Show file tree
Hide file tree
Showing 6 changed files with 144 additions and 25 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ Uses the `debian-sys-maint` from `/etc/mysql/debian.cnf` to login with.
* `percona_server_tools_reset_root_password.run`: [default: `false`]: Whether or not to run `reset-root-password.yml`

* `percona_server_tools_reset_root_password.root_password`: [required]: Root password
* `percona_server_tools_reset_root_password.unsafe_variables`: [optional, default: `[]`]: Variables (e.g. from `plugins`) that cause `mysqld` not to start when started with `--skip-grant-tables` (e.g. `^query_response_time_`)

##### Resize InnoDB logs

Expand Down
29 changes: 27 additions & 2 deletions tasks/main.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,37 @@
# tasks file for percona-server-tools
---
- include: reset-root-password.yml
when: percona_server_tools_reset_root_password.run | default(false)
- name: get mysql version
shell: >
mysqld --version | sed -ne 's/[^0-9]*\(\([0-9]\.\)\{0,4\}[0-9][^.]\).*/\1/p'
register: _mysql_version
changed_when: false
tags:
- configuration
- tools
- percona-server-tools
- percona-server-tools-get-mysql-version

- include: reset-root-password-lt-57.yml
when:
- percona_server_tools_reset_root_password.run | default(false)
- _mysql_version.stdout is version('5.7', '<')
tags:
- configuration
- tools
- percona-server-tools
- percona-server-tools-reset-root-password
- percona-server-tools-reset-root-password-lt-57

- include: reset-root-password-ge-57.yml
when:
- percona_server_tools_reset_root_password.run | default(false)
- _mysql_version.stdout is version('5.7', '>=')
tags:
- configuration
- tools
- percona-server-tools
- percona-server-tools-reset-root-password
- percona-server-tools-reset-root-password-ge-57

- include: reset-ib-logfile.yml
when: percona_server_tools_reset_ib_logfile.run | default(false)
Expand Down
80 changes: 80 additions & 0 deletions tasks/reset-root-password-ge-57.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# tasks file for percona-server-tools
---
- name: reset root password | stop service
service:
name: mysql
state: stopped
tags:
- percona-server-tools-reset-root-password-ge-57-stop-service

- name: reset root password | create init-file
copy:
dest: "{{ percona_server_tools_my_init_file }}"
content: |
UPDATE `mysql`.`user` SET `authentication_string` = PASSWORD('{{ percona_server_tools_reset_root_password.root_password }}'), plugin = 'mysql_native_password' WHERE `User` = 'root';
FLUSH PRIVILEGES;
owner: root
group: "{{ percona_server_tools_mysqld_user }}"
mode: 0640
force: true
tags:
- percona-server-tools-reset-root-password-ge-57-init-file-create

- name: reset root password | copy my.cnf
command: >
cp -av {{ percona_server_tools_my_cnf_file }} {{ percona_server_tools_my_cnf_file_safe }}
register: _my_cnf_copy
changed_when: _my_cnf_copy.stdout_lines | length > 0
tags:
- percona-server-tools-reset-root-password-ge-57-my-cnf-copy

- name: reset root password | make my.cnf safe
lineinfile:
path: "{{ percona_server_tools_my_cnf_file_safe }}"
state: absent
regexp: "{{ item }}"
with_items: "{{ percona_server_tools_reset_root_password.unsafe_variables | default([]) }}"
tags:
- percona-server-tools-reset-root-password-ge-57-my-cnf-safe

- name: reset root password | start service without grants and networking
command: >
timeout --preserve-status {{ percona_server_tools_mysqld_start_timeout }}s mysqld \
--defaults-file={{ percona_server_tools_my_cnf_file_safe }} \
--init-file={{ percona_server_tools_my_init_file }} \
--skip-grant-tables \
--skip-networking \
--user="{{ percona_server_tools_mysqld_user }}"
async: "{{ (percona_server_tools_mysqld_start_timeout | int) * 10 }}"
poll: 0
register: _mysqld_sleeper
changed_when: false
tags:
- percona-server-tools-reset-root-password-ge-57-start-service

- name: reset root password | wait for service to finish
async_status:
jid: "{{ _mysqld_sleeper.ansible_job_id }}"
register: _mysqld_sleeper_result
until: _mysqld_sleeper_result.finished
retries: "{{ (percona_server_tools_mysqld_start_timeout | int) * 10 }}"
delay: 1
tags:
- percona-server-tools-reset-root-password-ge-57-end-service

- name: reset root password | cleanup tmp files
file:
path: "{{ item }}"
state: absent
with_items:
- "{{ percona_server_tools_my_cnf_file_safe }}"
- "{{ percona_server_tools_my_init_file }}"
tags:
- percona-server-tools-reset-root-password-ge-57-cleanup

- name: reset root password | start service
service:
name: mysql
state: started
tags:
- percona-server-tools-reset-root-password-ge-57-start-service
27 changes: 27 additions & 0 deletions tasks/reset-root-password-lt-57.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# tasks file for percona-server-tools
---
- name: reset root password | flush privileges
command: >
mysql --defaults-file=/etc/mysql/debian.cnf --database=mysql -e "FLUSH PRIVILEGES;"
changed_when: false
tags:
- percona-server-tools-reset-root-password-lt-57-flush-privileges

- name: reset root password | login as debian-sys-maint and reset root password
command: >
mysql \
--defaults-file=/etc/mysql/debian.cnf \
--database=mysql \
-e "UPDATE `user` SET `Password` = PASSWORD('{{ percona_server_tools_reset_root_password.root_password }}') WHERE `User` = 'root'; SELECT ROW_COUNT();" \
--skip-column-names
register: _rows_affected
changed_when: "_rows_affected.stdout != '0'"
tags:
- percona-server-tools-reset-root-password-lt-57-update-password

- name: reset root password | flush privileges
command: >
mysql --defaults-file=/etc/mysql/debian.cnf --database=mysql -e "FLUSH PRIVILEGES;"
changed_when: false
tags:
- percona-server-tools-reset-root-password-lt-57-flush-privileges
23 changes: 0 additions & 23 deletions tasks/reset-root-password.yml

This file was deleted.

9 changes: 9 additions & 0 deletions vars/main.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
# vars file for percona-server-tools
---
percona_server_tools_ulimit: 65535

percona_server_tools_my_init_file: /etc/mysql/my.init
percona_server_tools_my_cnf_file: /etc/mysql/my.cnf
percona_server_tools_my_cnf_file_safe: "{{ percona_server_tools_my_cnf_file }}-safe"

percona_server_tools_preset_query_response_time_variables: '^query_response_time_'

percona_server_tools_mysqld_user: mysql
percona_server_tools_mysqld_start_timeout: 30

0 comments on commit 5139fd8

Please sign in to comment.