Files
dc-deployments-automation/roles/database_init/tasks/mysql.yml
2020-07-15 17:42:35 +10:00

79 lines
2.7 KiB
YAML

---
- name: Make sure mariadb is present
become: true
yum:
name: mariadb
state: present
- name: Make sure pymysql is present
become: true
pip:
name: pymysql
state: present
- name: Download and unzip MySQL driver
unarchive:
src: https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.21.tar.gz
dest: /tmp
remote_src: yes
- name: Copy file with owner and permissions
copy:
src: /tmp/mysql-connector-java-8.0.21/mysql-connector-java-8.0.21.jar
dest: "{{ atl_product_installation_versioned }}/lib"
owner: foo
group: foo
mode: '0644'
- name: Create application DB user
mysql_user:
login_host: "{{ atl_db_host }}"
login_user: "{{ atl_db_root_user }}"
login_password: "{{ atl_db_root_password }}"
login_port: "{{ atl_db_port }}"
name: "{{ atl_jdbc_user }}"
password: "{{ atl_jdbc_password }}"
- block:
# RDS does not allow changing the collation on an existing DB, it only allows collation change on creation of db. If the db already exists, we need the “create new application database” task to be skipped, idempotence can not be relied upon as we cant be certain the collation of the existing db
- name: Create new application database
mysql_db:
login_host: "{{ atl_db_host }}"
login_user: "{{ atl_db_root_user }}"
login_password: "{{ atl_db_root_password }}"
login_port: "{{ atl_db_port }}"
name: "{{ atl_jdbc_db_name }}"
encoding: "utf8" # TODO "{{ atl_jdbc_encoding }}"
collation: "utf8_bin" # TODO "{{ atl_jdbc_collation }}"
register: db_created
- name: Assert ownership of public schema
command: >
mysql --user={{ atl_db_root_user }} --password={{ atl_db_root_password }} {{ atl_jdbc_db_name }}
--host={{ atl_db_host }} --port={{ atl_db_port }} --batch --skip-column-names
--execute="GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX on {{ atl_jdbc_db_name }}.* TO '{{ atl_jdbc_user }}'@'{{ atl_db_host }}' IDENTIFIED BY '{{ atl_jdbc_password }}'; flush privileges;"
no_log: true
tags:
- new_only
# - name: Grant privs to root user on public schema
# postgresql_query:
# login_host: "{{ atl_db_host }}"
# login_user: "{{ atl_db_root_user }}"
# login_password: "{{ atl_db_root_password }}"
# db: "{{ atl_jdbc_db_name }}"
# query: "GRANT ALL ON SCHEMA public TO {{ atl_db_root_user }};"
# - name: Grant privs to application user on public schema
# postgresql_query:
# login_host: "{{ atl_db_host }}"
# login_user: "{{ atl_db_root_user }}"
# login_password: "{{ atl_db_root_password }}"
# db: "{{ atl_jdbc_db_name }}"
# query: "GRANT ALL ON SCHEMA public TO {{ atl_jdbc_user }};"