ansible-role-nextcloud/roles/nextcloud/tasks/db_mysql.yml

90 lines
3.1 KiB
YAML

---
- name: "[mySQL: Debian] - Service is installed."
package:
name: "{{ 'default-' if ((ansible_distribution|lower) == 'debian' and nextcloud_db_backend == 'mysql') else '' }}{{ nextcloud_db_backend }}-server"
state: present
register: nc_mysql_db_install
- name: "[mySQL] - Packages are installed."
package:
name: "{{ nc_mysql_deps }}"
state: present
vars:
nc_mysql_deps:
- "php{{ php_ver }}-mysql"
- "python{{ '3' if ansible_python.version.major == 3 else '' }}-pymysql"
- name: "[mySQL] - generate {{ nextcloud_db_backend }} root Password:"
set_fact:
nextcloud_mysql_root_pwd: "{{ lookup( 'password', 'nextcloud_instances/'+ nextcloud_instance_name +'/mysql_root.pwd' ) }}"
when: nextcloud_mysql_root_pwd is not defined
- name: "[mySQL] - save {{ nextcloud_db_backend }} root password in config file"
ini_file:
path: "{{ mysql_credential_file[(ansible_os_family|lower)] }}"
section: client
option: password
value: "{{ nextcloud_mysql_root_pwd }}"
no_log: true
when: mysql_credential_file[(ansible_os_family|lower)] is defined
# use debian default credentials to work on user root password
- name: "[mySQL] - Update {{ nextcloud_db_backend }} root password"
mysql_user:
name: root
password: "{{ nextcloud_mysql_root_pwd }}"
config_file: "{{ mysql_credential_file[(ansible_os_family|lower)] | default(omit) }}"
check_implicit_admin: yes
priv: "*.*:ALL,GRANT"
# Assuming the root user has only localhost access
host_all: yes
- name: "[mySQL] - Delete the anonymous user."
mysql_user:
user: ""
state: "absent"
login_user: root
login_password: "{{ nextcloud_mysql_root_pwd }}"
config_file: "{{ mysql_credential_file[(ansible_os_family|lower)] | default(omit) }}"
ignore_errors: yes
- name: "[mySQL] - Removes the MySQL test database"
mysql_db:
name: test
state: absent
login_user: root
login_password: "{{ nextcloud_mysql_root_pwd }}"
config_file: "{{ mysql_credential_file[(ansible_os_family|lower)] | default(omit) }}"
ignore_errors: yes
- name: "[mySQL] - Set mysql config option for nextcloud"
copy:
dest: /etc/mysql/conf.d/nextcloud.cnf
src: files/mysql_nextcloud.cnf
notify: restart mysql
- name: "[mySQL] - Generate database user Password."
set_fact:
nextcloud_db_pwd: "{{ lookup( 'password', 'nextcloud_instances/'+ nextcloud_instance_name +'/db_admin.pwd' ) }}"
when: nextcloud_db_pwd is not defined
- name: "[mySQL] - Add Database {{ nextcloud_db_name }}."
mysql_db:
name: "{{ nextcloud_db_name }}"
login_user: root
login_password: "{{ nextcloud_mysql_root_pwd }}"
config_file: "{{ mysql_credential_file[(ansible_os_family|lower)] | default(omit) }}"
state: present
- name: "[mySQL] - Configure the database user."
mysql_user:
name: "{{ nextcloud_db_admin }}"
password: "{{ nextcloud_db_pwd }}"
priv: "{{ nextcloud_db_name }}.*:ALL"
login_user: root
login_password: "{{ nextcloud_mysql_root_pwd }}"
config_file: "{{ mysql_credential_file[(ansible_os_family|lower)] | default(omit) }}"
state: present