mirror of
https://github.com/ansible-collections/community.mysql.git
synced 2025-06-04 15:29:12 -07:00
initial commit (#1)
* initial commit * removed remaining references to community.general * enabled integration pipeline * switched from preconfigured replication topology to simple multinode install * updated version from 1.0.0 to 0.1.0
This commit is contained in:
parent
9fcbbaad81
commit
c26bc095ad
89 changed files with 8774 additions and 135 deletions
|
@ -0,0 +1,25 @@
|
|||
# test code to assert message in mysql_variables module
|
||||
# (c) 2014, Wayne Rosario <wrosario@ansible.com>
|
||||
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# ============================================================
|
||||
# Assert message failure and confirm failed=true
|
||||
#
|
||||
- name: assert message failure (expect failed=true)
|
||||
assert:
|
||||
that:
|
||||
- "output.failed == true"
|
|
@ -0,0 +1,36 @@
|
|||
# test code to assert variables in mysql_variables module
|
||||
# (c) 2014, Wayne Rosario <wrosario@ansible.com>
|
||||
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# ============================================================
|
||||
# Assert mysql variable name and value from mysql database
|
||||
#
|
||||
- name: assert output message changed value
|
||||
assert:
|
||||
that:
|
||||
- "output.changed == {{ changed }}"
|
||||
|
||||
- name: run mysql command to show variable
|
||||
command: "{{ mysql_command }} \"-e show variables like '{{ var_name }}'\""
|
||||
register: result
|
||||
|
||||
- name: assert output mysql variable name and value
|
||||
assert:
|
||||
that:
|
||||
- "result.changed == true"
|
||||
- "'{{ var_name }}' in result.stdout"
|
||||
- "'{{ var_value }}' in result.stdout"
|
|
@ -0,0 +1,40 @@
|
|||
# test code to assert variables in mysql_variables module
|
||||
# (c) 2014, Wayne Rosario <wrosario@ansible.com>
|
||||
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# ============================================================
|
||||
# Assert output variable name/value match mysql variable name/value
|
||||
#
|
||||
- name: assert output message changed value
|
||||
assert:
|
||||
that:
|
||||
- "output.changed == {{ changed }}"
|
||||
|
||||
- set_fact:
|
||||
key_name: "{{ var_name }}"
|
||||
key_value: "{{ output.msg[0][0] }}"
|
||||
|
||||
- name: run mysql command to show variable
|
||||
command: "{{ mysql_command }} \"-e show variables like '{{var_name}}'\""
|
||||
register: result
|
||||
|
||||
- name: assert output variable info match mysql variable info
|
||||
assert:
|
||||
that:
|
||||
- "result.changed == true"
|
||||
- "key_name in result.stdout"
|
||||
- "key_value in result.stdout"
|
|
@ -0,0 +1 @@
|
|||
- import_tasks: mysql_variables.yml
|
|
@ -0,0 +1,368 @@
|
|||
# test code for the mysql_variables module
|
||||
# (c) 2014, Wayne Rosario <wrosario@ansible.com>
|
||||
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# ============================================================
|
||||
# Verify mysql_variable successfully queries a variable
|
||||
#
|
||||
- vars:
|
||||
mysql_parameters: &mysql_params
|
||||
login_user: '{{ mysql_user }}'
|
||||
login_password: '{{ mysql_password }}'
|
||||
login_host: 127.0.0.1
|
||||
login_port: '{{ mysql_primary_port }}'
|
||||
|
||||
block:
|
||||
|
||||
- name: alias mysql command to include default options
|
||||
set_fact:
|
||||
mysql_command: "mysql -u{{ mysql_user }} -p{{ mysql_password }} -P{{ mysql_primary_port }} --protocol=tcp"
|
||||
|
||||
- set_fact:
|
||||
set_name: 'version'
|
||||
|
||||
- name: read mysql variables (expect changed=false)
|
||||
mysql_variables:
|
||||
<<: *mysql_params
|
||||
variable: '{{ set_name }}'
|
||||
register: result
|
||||
|
||||
- include: assert_var_output.yml changed=false output={{ result }} var_name={{ set_name }}
|
||||
|
||||
# ============================================================
|
||||
# Verify mysql_variable successfully updates a variable (issue:4568)
|
||||
#
|
||||
- set_fact:
|
||||
set_name: 'delay_key_write'
|
||||
set_value: 'ON'
|
||||
|
||||
- name: set mysql variable
|
||||
mysql_variables:
|
||||
<<: *mysql_params
|
||||
variable: '{{ set_name }}'
|
||||
value: '{{ set_value }}'
|
||||
|
||||
- name: update mysql variable to same value (expect changed=false)
|
||||
mysql_variables:
|
||||
<<: *mysql_params
|
||||
variable: '{{ set_name }}'
|
||||
value: '{{ set_value }}'
|
||||
register: result
|
||||
|
||||
- include: assert_var.yml changed=false output={{ result }} var_name={{ set_name }} var_value={{ set_value }}
|
||||
|
||||
# ============================================================
|
||||
# Verify mysql_variable successfully updates a variable using single quotes
|
||||
#
|
||||
- set_fact:
|
||||
set_name: 'wait_timeout'
|
||||
set_value: '300'
|
||||
|
||||
- name: set mysql variable to a temp value
|
||||
mysql_variables:
|
||||
<<: *mysql_params
|
||||
variable: '{{ set_name }}'
|
||||
value: '200'
|
||||
|
||||
- name: update mysql variable value (expect changed=true)
|
||||
mysql_variables:
|
||||
<<: *mysql_params
|
||||
variable: '{{ set_name }}'
|
||||
value: '{{ set_value }}'
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result.queries == ["SET GLOBAL `{{ set_name }}` = {{ set_value }}"]
|
||||
|
||||
- include: assert_var.yml changed=true output={{ result }} var_name={{ set_name }} var_value='{{ set_value }}'
|
||||
|
||||
# ============================================================
|
||||
# Verify mysql_variable successfully updates a variable using double quotes
|
||||
#
|
||||
- set_fact:
|
||||
set_name: "wait_timeout"
|
||||
set_value: "400"
|
||||
|
||||
- name: set mysql variable to a temp value
|
||||
mysql_variables:
|
||||
<<: *mysql_params
|
||||
variable: '{{ set_name }}'
|
||||
value: "200"
|
||||
|
||||
- name: update mysql variable value (expect changed=true)
|
||||
mysql_variables:
|
||||
<<: *mysql_params
|
||||
variable: '{{ set_name }}'
|
||||
value: '{{ set_value }}'
|
||||
register: result
|
||||
|
||||
- include: assert_var.yml changed=true output={{ result }} var_name={{ set_name }} var_value='{{ set_value }}'
|
||||
|
||||
# ============================================================
|
||||
# Verify mysql_variable successfully updates a variable using no quotes
|
||||
#
|
||||
- set_fact:
|
||||
set_name: wait_timeout
|
||||
set_value: 500
|
||||
|
||||
- name: set mysql variable to a temp value
|
||||
mysql_variables:
|
||||
<<: *mysql_params
|
||||
variable: '{{ set_name }}'
|
||||
value: 200
|
||||
|
||||
- name: update mysql variable value (expect changed=true)
|
||||
mysql_variables:
|
||||
<<: *mysql_params
|
||||
variable: '{{ set_name }}'
|
||||
value: '{{ set_value }}'
|
||||
register: result
|
||||
|
||||
- include: assert_var.yml changed=true output={{ result }} var_name={{ set_name }} var_value='{{ set_value }}'
|
||||
|
||||
# ============================================================
|
||||
# Verify mysql_variable successfully updates a variable using an expression (e.g. 1024*4)
|
||||
#
|
||||
- name: set mysql variable value to an expression
|
||||
mysql_variables:
|
||||
<<: *mysql_params
|
||||
variable: max_tmp_tables
|
||||
value: "1024*4"
|
||||
register: result
|
||||
ignore_errors: true
|
||||
|
||||
- include: assert_fail_msg.yml output={{ result }} msg='Incorrect argument type to variable'
|
||||
|
||||
# ============================================================
|
||||
# Verify mysql_variable fails when setting an incorrect value (out of range)
|
||||
#
|
||||
- name: set mysql variable value to a number out of range
|
||||
mysql_variables:
|
||||
<<: *mysql_params
|
||||
variable: max_tmp_tables
|
||||
value: -1
|
||||
register: result
|
||||
ignore_errors: true
|
||||
|
||||
- include: assert_fail_msg.yml output={{ result }} msg='Truncated incorrect'
|
||||
|
||||
# ============================================================
|
||||
# Verify mysql_variable fails when setting an incorrect value (incorrect type)
|
||||
#
|
||||
- name: set mysql variable value to a non-valid value number
|
||||
mysql_variables:
|
||||
<<: *mysql_params
|
||||
variable: max_tmp_tables
|
||||
value: TEST
|
||||
register: result
|
||||
ignore_errors: true
|
||||
|
||||
- include: assert_fail_msg.yml output={{ result }} msg='Incorrect argument type to variable'
|
||||
|
||||
# ============================================================
|
||||
# Verify mysql_variable fails when setting an unknown variable
|
||||
#
|
||||
- name: set a non mysql variable
|
||||
mysql_variables:
|
||||
<<: *mysql_params
|
||||
variable: my_sql_variable
|
||||
value: ON
|
||||
register: result
|
||||
ignore_errors: true
|
||||
|
||||
- include: assert_fail_msg.yml output={{ result }} msg='Variable not available'
|
||||
|
||||
# ============================================================
|
||||
# Verify mysql_variable fails when setting a read-only variable
|
||||
#
|
||||
- name: set value of a read only mysql variable
|
||||
mysql_variables:
|
||||
<<: *mysql_params
|
||||
variable: character_set_system
|
||||
value: utf16
|
||||
register: result
|
||||
ignore_errors: true
|
||||
|
||||
- include: assert_fail_msg.yml output={{ result }} msg='read only variable'
|
||||
|
||||
#=============================================================
|
||||
# Verify mysql_variable works with the login_user and login_password parameters
|
||||
#
|
||||
- set_fact:
|
||||
set_name: wait_timeout
|
||||
set_value: 77
|
||||
|
||||
- name: query mysql_variable using login_user and password_password
|
||||
mysql_variables:
|
||||
<<: *mysql_params
|
||||
variable: '{{ set_name }}'
|
||||
register: result
|
||||
|
||||
- include: assert_var_output.yml changed=false output={{ result }} var_name={{ set_name }}
|
||||
|
||||
- name: set mysql variable to temp value using user login and password (expect changed=true)
|
||||
mysql_variables:
|
||||
<<: *mysql_params
|
||||
variable: '{{ set_name }}'
|
||||
value: 20
|
||||
register: result
|
||||
|
||||
- name: update mysql variable value using user login and password (expect changed=true)
|
||||
mysql_variables:
|
||||
<<: *mysql_params
|
||||
variable: '{{set_name}}'
|
||||
value: '{{set_value}}'
|
||||
register: result
|
||||
|
||||
- include: assert_var.yml changed=true output={{result}} var_name={{set_name}} var_value='{{set_value}}'
|
||||
|
||||
#============================================================
|
||||
# Verify mysql_variable fails with an incorrect login_password parameter
|
||||
#
|
||||
- set_fact:
|
||||
set_name: connect_timeout
|
||||
set_value: 10
|
||||
|
||||
- name: query mysql_variable using incorrect login_password
|
||||
mysql_variables:
|
||||
login_user: '{{ mysql_user }}'
|
||||
login_password: 'wrongpassword'
|
||||
login_host: 127.0.0.1
|
||||
login_port: '{{ mysql_primary_port }}'
|
||||
variable: '{{ set_name }}'
|
||||
register: result
|
||||
ignore_errors: true
|
||||
|
||||
- include: assert_fail_msg.yml output={{ result }} msg='unable to connect to database'
|
||||
|
||||
- name: update mysql variable value using incorrect login_password (expect failed=true)
|
||||
mysql_variables:
|
||||
login_user: '{{ mysql_user }}'
|
||||
login_password: 'wrongpassword'
|
||||
login_host: 127.0.0.1
|
||||
login_port: '{{ mysql_primary_port }}'
|
||||
variable: '{{ set_name }}'
|
||||
value: '{{ set_value }}'
|
||||
register: result
|
||||
ignore_errors: true
|
||||
|
||||
- include: assert_fail_msg.yml output={{ result }} msg='unable to connect to database'
|
||||
|
||||
#============================================================
|
||||
# Verify mysql_variable fails with an incorrect login_host parameter
|
||||
#
|
||||
- name: query mysql_variable using incorrect login_host
|
||||
mysql_variables:
|
||||
login_user: '{{ mysql_user }}'
|
||||
login_password: '{{ mysql_password }}'
|
||||
login_host: '12.0.0.9'
|
||||
login_port: '{{ mysql_primary_port }}'
|
||||
variable: wait_timeout
|
||||
connect_timeout: 5
|
||||
register: result
|
||||
ignore_errors: true
|
||||
|
||||
- include: assert_fail_msg.yml output={{ result }} msg='unable to connect to database'
|
||||
|
||||
#=========================================
|
||||
# Check mode 'persist' and 'persist_only':
|
||||
#
|
||||
- name: update mysql variable value (expect changed=true) in persist mode
|
||||
mysql_variables:
|
||||
<<: *mysql_params
|
||||
variable: '{{ set_name }}'
|
||||
value: '{{ set_value }}'
|
||||
mode: persist
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result.queries == ["SET PERSIST `{{ set_name }}` = {{ set_value }}"]
|
||||
|
||||
- include: assert_var.yml changed=true output={{ result }} var_name={{ set_name }} var_value='{{ set_value }}'
|
||||
|
||||
- name: try to update mysql variable value (expect changed=false) in persist mode again
|
||||
mysql_variables:
|
||||
<<: *mysql_params
|
||||
variable: '{{ set_name }}'
|
||||
value: '{{ set_value }}'
|
||||
mode: persist
|
||||
register: result
|
||||
|
||||
- include: assert_var.yml changed=false output={{ result }} var_name={{ set_name }} var_value='{{ set_value }}'
|
||||
|
||||
- name: set mysql variable to a temp value
|
||||
mysql_variables:
|
||||
<<: *mysql_params
|
||||
variable: '{{ set_name }}'
|
||||
value: '200'
|
||||
mode: persist
|
||||
|
||||
- name: update mysql variable value (expect changed=true) in persist_only mode
|
||||
mysql_variables:
|
||||
<<: *mysql_params
|
||||
variable: '{{ set_name }}'
|
||||
value: '{{ set_value }}'
|
||||
mode: persist_only
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is changed
|
||||
- result.queries == ["SET PERSIST_ONLY `{{ set_name }}` = {{ set_value }}"]
|
||||
|
||||
- name: try to update mysql variable value (expect changed=false) in persist_only mode again
|
||||
mysql_variables:
|
||||
<<: *mysql_params
|
||||
variable: '{{ set_name }}'
|
||||
value: '{{ set_value }}'
|
||||
mode: persist_only
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is not changed
|
||||
|
||||
- set_fact:
|
||||
set_name: max_connections
|
||||
set_value: 105
|
||||
def_val: 151
|
||||
|
||||
- name: update mysql variable value (expect changed=true) in persist_only mode
|
||||
mysql_variables:
|
||||
<<: *mysql_params
|
||||
variable: '{{ set_name }}'
|
||||
value: '{{ set_value }}'
|
||||
mode: persist_only
|
||||
register: result
|
||||
|
||||
- include: assert_var.yml changed=true output={{ result }} var_name={{ set_name }} var_value='{{ def_val }}'
|
||||
|
||||
# Bugfix of https://github.com/ansible/ansible/issues/54239
|
||||
# - name: set variable containing dot
|
||||
# mysql_variables:
|
||||
# <<: *mysql_params
|
||||
# variable: validate_password.policy
|
||||
# value: LOW
|
||||
# mode: persist_only
|
||||
# register: result
|
||||
#
|
||||
# - assert:
|
||||
# that:
|
||||
# - result is changed
|
||||
# - result.queries == ["SET PERSIST_ONLY `validate_password`.`policy` = LOW"]
|
Loading…
Add table
Add a link
Reference in a new issue