--- - 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: # ============================================================ - shell: pip show pymysql | awk '/Version/ {print $2}' register: pymysql_version - name: get server certificate copy: content: "{{ lookup('pipe', \"openssl s_client -starttls mysql -connect localhost:3307 -showcerts 2>/dev/null </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'\") }}" dest: /tmp/cert.pem delegate_to: localhost - name: Drop mysql user if exists mysql_user: <<: *mysql_params name: '{{ user_name_1 }}' state: absent ignore_errors: yes - name: create user with ssl requirement mysql_user: <<: *mysql_params name: "{{ user_name_1 }}" password: "{{ user_password_1 }}" tls_requires: SSL: - name: attempt connection with newly created user (expect failure) mysql_query: query: 'SHOW DATABASES' login_user: '{{ user_name_1 }}' login_password: '{{ user_password_1 }}' login_host: 127.0.0.1 login_port: '{{ mysql_primary_port }}' ca_cert: /tmp/cert.pem register: result ignore_errors: yes - assert: that: - result is failed when: pymysql_version.stdout != "" - assert: that: - result is succeeded when: pymysql_version.stdout == "" - name: attempt connection with newly created user ignoring hostname mysql_query: query: 'SHOW DATABASES' login_user: '{{ user_name_1 }}' login_password: '{{ user_password_1 }}' login_host: 127.0.0.1 login_port: '{{ mysql_primary_port }}' ca_cert: /tmp/cert.pem check_hostname: no register: result ignore_errors: yes - assert: that: - result is succeeded or 'pymysql >= 0.7.11 is required' in result.msg - name: Drop mysql user mysql_user: <<: *mysql_params name: '{{ user_name_1 }}' host: 127.0.0.1 state: absent