mirror of
https://github.com/ansible-collections/community.mysql.git
synced 2025-07-27 23:21:27 -07:00
WIP attempt to retrieve all users privileges
This commit is contained in:
parent
033b4c74f9
commit
d7beeec410
6 changed files with 307 additions and 238 deletions
|
@ -0,0 +1,13 @@
|
|||
---
|
||||
|
||||
- name: Collect info about users_privs
|
||||
community.mysql.mysql_info:
|
||||
login_user: '{{ mysql_user }}'
|
||||
login_password: '{{ mysql_password }}'
|
||||
login_host: '{{ mysql_host }}'
|
||||
login_port: '{{ mysql_primary_port }}'
|
||||
filter:
|
||||
- users_privs
|
||||
register: result
|
||||
|
||||
- debug: var=result
|
|
@ -21,201 +21,205 @@
|
|||
|
||||
block:
|
||||
|
||||
# Create default MySQL config file with credentials
|
||||
- name: mysql_info - create default config file
|
||||
template:
|
||||
src: my.cnf.j2
|
||||
dest: "{{ playbook_dir }}/root/.my.cnf"
|
||||
mode: '0400'
|
||||
# # Create default MySQL config file with credentials
|
||||
# - name: mysql_info - create default config file
|
||||
# template:
|
||||
# src: my.cnf.j2
|
||||
# dest: "{{ playbook_dir }}/root/.my.cnf"
|
||||
# mode: '0400'
|
||||
|
||||
# Create non-default MySQL config file with credentials
|
||||
- name: mysql_info - create non-default config file
|
||||
template:
|
||||
src: my.cnf.j2
|
||||
dest: "{{ playbook_dir }}/root/non-default_my.cnf"
|
||||
mode: '0400'
|
||||
# # Create non-default MySQL config file with credentials
|
||||
# - name: mysql_info - create non-default config file
|
||||
# template:
|
||||
# src: my.cnf.j2
|
||||
# dest: "{{ playbook_dir }}/root/non-default_my.cnf"
|
||||
# mode: '0400'
|
||||
|
||||
###############
|
||||
# Do tests
|
||||
# ###############
|
||||
# # Do tests
|
||||
|
||||
# Access by default cred file
|
||||
- name: mysql_info - collect default cred file
|
||||
mysql_info:
|
||||
login_user: '{{ mysql_user }}'
|
||||
login_host: '{{ mysql_host }}'
|
||||
login_port: '{{ mysql_primary_port }}'
|
||||
config_file: "{{ playbook_dir }}/root/.my.cnf"
|
||||
register: result
|
||||
# # Access by default cred file
|
||||
# - name: mysql_info - collect default cred file
|
||||
# mysql_info:
|
||||
# login_user: '{{ mysql_user }}'
|
||||
# login_host: '{{ mysql_host }}'
|
||||
# login_port: '{{ mysql_primary_port }}'
|
||||
# config_file: "{{ playbook_dir }}/root/.my.cnf"
|
||||
# register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- db_version in result.version.full
|
||||
- result.settings != {}
|
||||
- result.global_status != {}
|
||||
- result.databases != {}
|
||||
- result.engines != {}
|
||||
- result.users != {}
|
||||
# - assert:
|
||||
# that:
|
||||
# - result is not changed
|
||||
# - db_version in result.version.full
|
||||
# - result.settings != {}
|
||||
# - result.global_status != {}
|
||||
# - result.databases != {}
|
||||
# - result.engines != {}
|
||||
# - result.users != {}
|
||||
|
||||
- name: mysql_info - Test connector informations display
|
||||
# - name: mysql_info - Test connector informations display
|
||||
# ansible.builtin.import_tasks:
|
||||
# file: connector_info.yml
|
||||
|
||||
# # Access by non-default cred file
|
||||
# - name: mysql_info - check non-default cred file
|
||||
# mysql_info:
|
||||
# login_user: '{{ mysql_user }}'
|
||||
# login_host: '{{ mysql_host }}'
|
||||
# login_port: '{{ mysql_primary_port }}'
|
||||
# config_file: "{{ playbook_dir }}/root/non-default_my.cnf"
|
||||
# register: result
|
||||
|
||||
# - assert:
|
||||
# that:
|
||||
# - result is not changed
|
||||
# - result.version != {}
|
||||
|
||||
# # Remove cred files
|
||||
# - name: mysql_info - remove cred files
|
||||
# file:
|
||||
# path: '{{ item }}'
|
||||
# state: absent
|
||||
# loop:
|
||||
# - "{{ playbook_dir }}/.my.cnf"
|
||||
# - "{{ playbook_dir }}/non-default_my.cnf"
|
||||
|
||||
# # Access with password
|
||||
# - name: mysql_info - check access with password
|
||||
# mysql_info:
|
||||
# <<: *mysql_params
|
||||
# register: result
|
||||
|
||||
# - assert:
|
||||
# that:
|
||||
# - result is not changed
|
||||
# - result.version != {}
|
||||
|
||||
# # Test excluding
|
||||
# - name: Collect all info except settings and users
|
||||
# mysql_info:
|
||||
# <<: *mysql_params
|
||||
# filter: '!settings,!users'
|
||||
# register: result
|
||||
|
||||
# - assert:
|
||||
# that:
|
||||
# - result is not changed
|
||||
# - result.version != {}
|
||||
# - result.global_status != {}
|
||||
# - result.databases != {}
|
||||
# - result.engines != {}
|
||||
# - result.settings is not defined
|
||||
# - result.users is not defined
|
||||
|
||||
# # Test including
|
||||
# - name: Collect info only about version and databases
|
||||
# mysql_info:
|
||||
# <<: *mysql_params
|
||||
# filter:
|
||||
# - version
|
||||
# - databases
|
||||
# register: result
|
||||
|
||||
# - assert:
|
||||
# that:
|
||||
# - result is not changed
|
||||
# - result.version != {}
|
||||
# - result.databases != {}
|
||||
# - result.engines is not defined
|
||||
# - result.settings is not defined
|
||||
# - result.global_status is not defined
|
||||
# - result.users is not defined
|
||||
|
||||
# # Test exclude_fields: db_size
|
||||
# # 'unsupported' element is passed to check that an unsupported value
|
||||
# # won't break anything (will be ignored regarding to the module's documentation).
|
||||
# - name: Collect info about databases excluding their sizes
|
||||
# mysql_info:
|
||||
# <<: *mysql_params
|
||||
# filter:
|
||||
# - databases
|
||||
# exclude_fields:
|
||||
# - db_size
|
||||
# - unsupported
|
||||
# register: result
|
||||
|
||||
# - assert:
|
||||
# that:
|
||||
# - result is not changed
|
||||
# - result.databases != {}
|
||||
# - result.databases.mysql == {}
|
||||
|
||||
# ########################################################
|
||||
# # Issue #65727, empty databases must be in returned dict
|
||||
# #
|
||||
# - name: Create empty database acme
|
||||
# mysql_db:
|
||||
# <<: *mysql_params
|
||||
# name: acme
|
||||
|
||||
# - name: Collect info about databases
|
||||
# mysql_info:
|
||||
# <<: *mysql_params
|
||||
# filter:
|
||||
# - databases
|
||||
# return_empty_dbs: true
|
||||
# register: result
|
||||
|
||||
# # Check acme is in returned dict
|
||||
# - assert:
|
||||
# that:
|
||||
# - result is not changed
|
||||
# - result.databases.acme.size == 0
|
||||
# - result.databases.mysql != {}
|
||||
|
||||
# - name: Collect info about databases excluding their sizes
|
||||
# mysql_info:
|
||||
# <<: *mysql_params
|
||||
# filter:
|
||||
# - databases
|
||||
# exclude_fields:
|
||||
# - db_size
|
||||
# return_empty_dbs: true
|
||||
# register: result
|
||||
|
||||
# # Check acme is in returned dict
|
||||
# - assert:
|
||||
# that:
|
||||
# - result is not changed
|
||||
# - result.databases.acme == {}
|
||||
# - result.databases.mysql == {}
|
||||
|
||||
# - name: Remove acme database
|
||||
# mysql_db:
|
||||
# <<: *mysql_params
|
||||
# name: acme
|
||||
# state: absent
|
||||
|
||||
# - include_tasks: issue-28.yml
|
||||
|
||||
# # https://github.com/ansible-collections/community.mysql/issues/204
|
||||
# - name: Create database containing only views
|
||||
# mysql_db:
|
||||
# <<: *mysql_params
|
||||
# name: allviews
|
||||
|
||||
# - name: Create view
|
||||
# mysql_query:
|
||||
# <<: *mysql_params
|
||||
# login_db: allviews
|
||||
# query: 'CREATE VIEW v_today (today) AS SELECT CURRENT_DATE'
|
||||
|
||||
# - name: Fetch info
|
||||
# mysql_info:
|
||||
# <<: *mysql_params
|
||||
# register: result
|
||||
|
||||
# - name: Check
|
||||
# assert:
|
||||
# that:
|
||||
# - result.databases.allviews.size == 0
|
||||
|
||||
- name: Inport tasks file to tests users_privs filter
|
||||
ansible.builtin.import_tasks:
|
||||
file: connector_info.yml
|
||||
|
||||
# Access by non-default cred file
|
||||
- name: mysql_info - check non-default cred file
|
||||
mysql_info:
|
||||
login_user: '{{ mysql_user }}'
|
||||
login_host: '{{ mysql_host }}'
|
||||
login_port: '{{ mysql_primary_port }}'
|
||||
config_file: "{{ playbook_dir }}/root/non-default_my.cnf"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- result.version != {}
|
||||
|
||||
# Remove cred files
|
||||
- name: mysql_info - remove cred files
|
||||
file:
|
||||
path: '{{ item }}'
|
||||
state: absent
|
||||
loop:
|
||||
- "{{ playbook_dir }}/.my.cnf"
|
||||
- "{{ playbook_dir }}/non-default_my.cnf"
|
||||
|
||||
# Access with password
|
||||
- name: mysql_info - check access with password
|
||||
mysql_info:
|
||||
<<: *mysql_params
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- result.version != {}
|
||||
|
||||
# Test excluding
|
||||
- name: Collect all info except settings and users
|
||||
mysql_info:
|
||||
<<: *mysql_params
|
||||
filter: '!settings,!users'
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- result.version != {}
|
||||
- result.global_status != {}
|
||||
- result.databases != {}
|
||||
- result.engines != {}
|
||||
- result.settings is not defined
|
||||
- result.users is not defined
|
||||
|
||||
# Test including
|
||||
- name: Collect info only about version and databases
|
||||
mysql_info:
|
||||
<<: *mysql_params
|
||||
filter:
|
||||
- version
|
||||
- databases
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- result.version != {}
|
||||
- result.databases != {}
|
||||
- result.engines is not defined
|
||||
- result.settings is not defined
|
||||
- result.global_status is not defined
|
||||
- result.users is not defined
|
||||
|
||||
# Test exclude_fields: db_size
|
||||
# 'unsupported' element is passed to check that an unsupported value
|
||||
# won't break anything (will be ignored regarding to the module's documentation).
|
||||
- name: Collect info about databases excluding their sizes
|
||||
mysql_info:
|
||||
<<: *mysql_params
|
||||
filter:
|
||||
- databases
|
||||
exclude_fields:
|
||||
- db_size
|
||||
- unsupported
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- result.databases != {}
|
||||
- result.databases.mysql == {}
|
||||
|
||||
########################################################
|
||||
# Issue #65727, empty databases must be in returned dict
|
||||
#
|
||||
- name: Create empty database acme
|
||||
mysql_db:
|
||||
<<: *mysql_params
|
||||
name: acme
|
||||
|
||||
- name: Collect info about databases
|
||||
mysql_info:
|
||||
<<: *mysql_params
|
||||
filter:
|
||||
- databases
|
||||
return_empty_dbs: true
|
||||
register: result
|
||||
|
||||
# Check acme is in returned dict
|
||||
- assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- result.databases.acme.size == 0
|
||||
- result.databases.mysql != {}
|
||||
|
||||
- name: Collect info about databases excluding their sizes
|
||||
mysql_info:
|
||||
<<: *mysql_params
|
||||
filter:
|
||||
- databases
|
||||
exclude_fields:
|
||||
- db_size
|
||||
return_empty_dbs: true
|
||||
register: result
|
||||
|
||||
# Check acme is in returned dict
|
||||
- assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- result.databases.acme == {}
|
||||
- result.databases.mysql == {}
|
||||
|
||||
- name: Remove acme database
|
||||
mysql_db:
|
||||
<<: *mysql_params
|
||||
name: acme
|
||||
state: absent
|
||||
|
||||
- include_tasks: issue-28.yml
|
||||
|
||||
# https://github.com/ansible-collections/community.mysql/issues/204
|
||||
- name: Create database containing only views
|
||||
mysql_db:
|
||||
<<: *mysql_params
|
||||
name: allviews
|
||||
|
||||
- name: Create view
|
||||
mysql_query:
|
||||
<<: *mysql_params
|
||||
login_db: allviews
|
||||
query: 'CREATE VIEW v_today (today) AS SELECT CURRENT_DATE'
|
||||
|
||||
- name: Fetch info
|
||||
mysql_info:
|
||||
<<: *mysql_params
|
||||
register: result
|
||||
|
||||
- name: Check
|
||||
assert:
|
||||
that:
|
||||
- result.databases.allviews.size == 0
|
||||
file: filter_users_privs.yml
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue