From 4a2ab4e2a34a6052a081a04e8d6557eb3aa6729b Mon Sep 17 00:00:00 2001 From: Jafar Lie <jafar.lie@monash.edu> Date: Thu, 12 Mar 2020 14:14:57 +1100 Subject: [PATCH] rejigged mysql install procedure --- CICD/plays/nfssqlnodes.yml | 2 +- roles/mysql/tasks/Centos_7_mysql_server.yml | 57 ++++++++++++++++++++ roles/mysql/tasks/Ubuntu_18_mysql_server.yml | 39 ++++++++++++++ roles/mysql/tasks/main.yml | 2 +- 4 files changed, 98 insertions(+), 2 deletions(-) create mode 100644 roles/mysql/tasks/Centos_7_mysql_server.yml create mode 100644 roles/mysql/tasks/Ubuntu_18_mysql_server.yml diff --git a/CICD/plays/nfssqlnodes.yml b/CICD/plays/nfssqlnodes.yml index f2efc924..24a73383 100644 --- a/CICD/plays/nfssqlnodes.yml +++ b/CICD/plays/nfssqlnodes.yml @@ -45,8 +45,8 @@ gather_facts: True roles: - { role: upgrade, tags: [ upgrade ] } - - { role: mysql, mysql_type: mysql_server, mysql_root_password: "{{ sqlrootPasswd }}", mysql_user_name: slurmdb, mysql_user_db_name: slurm_acct_db, mysql_user_hosts_group: "{{ groups['ManagementNodes'] }}", mysql_user_password: "{{ slurmdb_passwd }}", tags: [ database ] } - { role: make_filesystems, volumes: "{{ dbvolumes }}" } + - { role: mysql, mysql_type: mysql_server, mysql_root_password: "{{ sqlrootPasswd }}", mysql_user_name: slurmdb, mysql_user_db_name: slurm_acct_db, mysql_user_hosts_group: "{{ groups['ManagementNodes'] }}", mysql_user_password: "{{ slurmdb_passwd }}", tags: [ database ] } - { role: slurm-mysql-config, tags: [database,slurmdb] } tags: [ sql ] diff --git a/roles/mysql/tasks/Centos_7_mysql_server.yml b/roles/mysql/tasks/Centos_7_mysql_server.yml new file mode 100644 index 00000000..33f65d3d --- /dev/null +++ b/roles/mysql/tasks/Centos_7_mysql_server.yml @@ -0,0 +1,57 @@ +--- +- name: Make sure OS is updated since apt install might fail + apt: + update_cache: yes + become: true + when: ansible_os_family == "Debian" + +- name: "Installing MySQL Debian" + apt: name="{{ server_packages }}" update_cache=yes state=present + become: true + when: ansible_os_family == "Debian" + +- name: Installing MySQL RedHat + yum: name={{ item }} + with_items: "{{ server_packages }}" + become: true + when: ansible_os_family == "RedHat" + +- name: make sure mysql conf directory exists + file: dest=/etc/mysql/conf.d state=directory + become: true + register: mysqldb_confdir_create + +- name: "Starting MySQL" + service: name={{ sqlServiceName }} state=started enabled=true + become: true + +#- name: "Adding root" +# become: true +# mysql_user: name=root host="{{ item }}" password="{{ mysql_root_password }}" login_user=root login_password="{{ mysql_root_password }}" check_implicit_admin=yes +# with_items: +# - "{{ ansible_hostname }}" +# - 127.0.0.1 +# - ::1 +# - localhost + +- name: Check that the slurm_acct_db_directory exists + stat: + path: /var/lib/mysql/slurm_acct_db/ #defined in /vars/filesystems.yaml + register: slurm_acct_db_directory_result + +# this will only work if a completely fresh db gets installed because it gets shipped with a blank root pw +- name: update mysql root password for all root accounts + mysql_user: name=root host=localhost password={{ mysql_root_password }} login_user=root + when: not slurm_acct_db_directory_result.stat.exists and mysqldb_confdir_create.changed + +- name: "Adding user database" + mysql_db: name={{ mysql_user_db_name }} state=present login_user=root login_password={{ mysql_root_password }} + +- name: "Giving priviliges to user" + mysql_user: name={{ mysql_user_name }} host={{ mysql_user_host }} password={{ mysql_user_password }} login_user=root login_password={{ mysql_root_password }} priv={{ mysql_user_db_name }}.*:ALL,GRANT state=present + when: mysql_user_host is defined + +- name: "Giving priviliges to user" + mysql_user: name={{ mysql_user_name }} host={{ hostvars[item].ansible_fqdn }} password={{ mysql_user_password }} login_user=root login_password={{ mysql_root_password }} priv={{ mysql_user_db_name }}.*:ALL,GRANT state=present + with_items: "{{ mysql_user_hosts_group }}" + when: mysql_user_hosts_group is defined diff --git a/roles/mysql/tasks/Ubuntu_18_mysql_server.yml b/roles/mysql/tasks/Ubuntu_18_mysql_server.yml new file mode 100644 index 00000000..90dfd18d --- /dev/null +++ b/roles/mysql/tasks/Ubuntu_18_mysql_server.yml @@ -0,0 +1,39 @@ +--- +- name: Make sure OS is updated since apt install might fail + apt: + update_cache: yes + become: true + +- name: "Installing MySQL Debian" + apt: name="{{ server_packages }}" update_cache=yes state=present + become: true + +- name: make sure mysql conf directory exists + file: dest=/etc/mysql/conf.d state=directory + become: true + register: mysqldb_confdir_create + +- name: "Starting MySQL" + service: name={{ sqlServiceName }} state=started enabled=true + become: true + +- name: Check that the slurm_acct_db_directory exists + stat: + path: /var/lib/mysql/slurm_acct_db/ #defined in /vars/filesystems.yaml + register: slurm_acct_db_directory_result + +# this will only work if a completely fresh db gets installed because it gets shipped with a blank root pw +- name: update mysql root password for all root accounts + mysql_user: name=root host=localhost password={{ mysql_root_password }} login_user=root + +- name: "Adding user database" + mysql_db: name={{ mysql_user_db_name }} state=present login_user=root login_password={{ mysql_root_password }} + +- name: "Giving priviliges to user" + mysql_user: name={{ mysql_user_name }} host={{ mysql_user_host }} password={{ mysql_user_password }} login_user=root login_password={{ mysql_root_password }} priv={{ mysql_user_db_name }}.*:ALL,GRANT state=present + when: mysql_user_host is defined + +- name: "Giving priviliges to user" + mysql_user: name={{ mysql_user_name }} host={{ hostvars[item].ansible_fqdn }} password={{ mysql_user_password }} login_user=root login_password={{ mysql_root_password }} priv={{ mysql_user_db_name }}.*:ALL,GRANT state=present + with_items: "{{ mysql_user_hosts_group }}" + when: mysql_user_hosts_group is defined diff --git a/roles/mysql/tasks/main.yml b/roles/mysql/tasks/main.yml index fd7181ba..ab7adde9 100644 --- a/roles/mysql/tasks/main.yml +++ b/roles/mysql/tasks/main.yml @@ -1,3 +1,3 @@ --- - include_vars: "{{ ansible_distribution }}_{{ ansible_distribution_major_version }}.yml" -- include: "{{ mysql_type }}.yml" +- include: "{{ ansible_distribution }}_{{ ansible_distribution_major_version }}_{{ mysql_type }}.yml" -- GitLab