mirror of
https://github.com/ansible-collections/community.mysql.git
synced 2025-06-20 23:30:23 -07:00
94 lines
3 KiB
YAML
94 lines
3 KiB
YAML
---
|
|
- name: set fact tls_enabled
|
|
command: "{{ mysql_command }} \"-e SHOW VARIABLES LIKE 'have_ssl';\""
|
|
register: result
|
|
- set_fact:
|
|
tls_enabled: "{{ 'YES' in result.stdout | bool | default('false', true) }}"
|
|
|
|
- vars:
|
|
mysql_parameters: &mysql_params
|
|
login_user: '{{ mysql_user }}'
|
|
login_password: '{{ mysql_password }}'
|
|
login_host: '{{ mysql_host }}'
|
|
login_port: '{{ mysql_primary_port }}'
|
|
when: tls_enabled
|
|
block:
|
|
|
|
# ============================================================
|
|
- name: Issue-28 | Setup | Get server certificate
|
|
copy:
|
|
content: "{{ lookup('pipe', \"openssl s_client -starttls mysql -connect {{ mysql_host }}:3307 -showcerts 2>/dev/null </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'\") }}"
|
|
dest: /tmp/cert.pem
|
|
delegate_to: localhost
|
|
|
|
- name: Issue-28 | Setup | Drop mysql user if exists
|
|
mysql_user:
|
|
<<: *mysql_params
|
|
name: '{{ user_name_1 }}'
|
|
host_all: true
|
|
state: absent
|
|
ignore_errors: true
|
|
|
|
- name: Issue-28 | Create user with ssl requirement
|
|
mysql_user:
|
|
<<: *mysql_params
|
|
name: "{{ user_name_1 }}"
|
|
host: '{{ gateway_addr }}'
|
|
password: "{{ user_password_1 }}"
|
|
priv: '*.*:ALL,GRANT'
|
|
tls_requires:
|
|
SSL:
|
|
|
|
- name: Issue-28 | Attempt connection with newly created user (expect failure)
|
|
mysql_user:
|
|
name: "{{ user_name_2 }}"
|
|
password: "{{ user_password_2 }}"
|
|
host: '{{ gateway_addr }}'
|
|
login_user: '{{ user_name_1 }}'
|
|
login_password: '{{ user_password_1 }}'
|
|
login_host: '{{ gateway_addr }}'
|
|
login_port: '{{ mysql_primary_port }}'
|
|
ca_cert: /tmp/cert.pem
|
|
register: result
|
|
ignore_errors: true
|
|
|
|
- name: Issue-28 | Assert connection failed
|
|
assert:
|
|
that:
|
|
- result is failed
|
|
when: connector_name is search('pymysql')
|
|
|
|
- name: Issue-28 | Assert connection succeeded
|
|
assert:
|
|
that:
|
|
- result is succeeded
|
|
when: connector_name is not search('pymysql')
|
|
|
|
- name: Issue-28 | Attempt connection with newly created user ignoring hostname
|
|
mysql_user:
|
|
name: "{{ user_name_2 }}"
|
|
password: "{{ user_password_2 }}"
|
|
host: '{{ gateway_addr }}'
|
|
login_user: '{{ user_name_1 }}'
|
|
login_password: '{{ user_password_1 }}'
|
|
login_host: '{{ gateway_addr }}'
|
|
login_port: '{{ mysql_primary_port }}'
|
|
ca_cert: /tmp/cert.pem
|
|
check_hostname: false
|
|
register: result
|
|
ignore_errors: true
|
|
|
|
- name: Issue-28 | Assert connection succeeded
|
|
assert:
|
|
that:
|
|
- result is succeeded or 'pymysql >= 0.7.11 is required' in result.msg
|
|
|
|
- name: Issue-28 | Drop mysql user
|
|
mysql_user:
|
|
<<: *mysql_params
|
|
name: '{{ item }}'
|
|
host: '{{ gateway_addr }}'
|
|
state: absent
|
|
with_items:
|
|
- "{{ user_name_1 }}"
|
|
- "{{ user_name_2 }}"
|