# We run two servers listening different ports # to be able to check replication (one server for primary, another for replica). - name: Include distribution specific variables include_vars: "{{ lookup('first_found', params) }}" vars: params: files: - "{{ ansible_facts.distribution }}-{{ ansible_facts.distribution_version }}.yml" - "{{ ansible_facts.os_family }}-{{ ansible_facts.distribution_major_version }}.yml" - "{{ ansible_facts.distribution }}.yml" - "{{ ansible_facts.os_family }}.yml" - default.yml paths: - vars - name: Install MariaDB repo yum_repository: name: MariaDB description: MariaDB official repo baseurl: "{{ repo_link }}" gpgkey: "{{ repo_gpgkey }}" gpgcheck: yes notify: cleanup mariadb - name: Install MariaDB packages yum: name: "{{ mariadb_packages }}" enablerepo: "{{ mariadb_enable_repo | default(omit) }}" notify: cleanup mariadb - name: Create directories for instances file: state: directory path: "{{ item }}" owner: mysql group: mysql loop: - "{{ primary_db.datadir }}" - "{{ primary_db.logdir }}" - "{{ replica_db.datadir }}" - "{{ replica_db.logdir }}" notify: cleanup mariadb - name: Copy configuration templates template: src: "{{ 'my' ~ item ~ '.j2' }}" dest: /etc/my.cnf.d/my{{ item }}.cnf owner: mysql group: mysql force: yes when: ansible_facts.distribution_major_version is version('7', '==') loop: - '{{ primary_db.name }}' - '{{ replica_db.name }}' - name: Copy configuration template template: src: my.cnf.j2 dest: /etc/my.cnf owner: mysql group: mysql force: yes when: ansible_facts.distribution_major_version is version('8', '==') - name: Initialize DBs shell: 'mysql_install_db --user=mysql --datadir={{ item }}' loop: - '{{ primary_db.datadir }}' - '{{ replica_db.datadir }}' - name: Start services service: name: mariadb@{{ item }} state: started loop: - "{{ primary_db.name }}" - "{{ replica_db.name }}" - pause: seconds: 3 ########### For painful debug uncomment the lines below ## #- name: DEBUG Check stratup log # shell: cat /var/log/mariadb/mariadb.log #- name: DEBUG Check mysql_safe err log # shell: cat '{{ mysql_safe_err_log }}' #- name: DEBUG Check processes # shell: 'ps aux | grep mysqld | grep -v "grep\|root"' #- name: DEBUG # yum: name=net-tools #- name: DEBUG # shell: "netstat -ntpl" #- name: DEBUG # shell: cat /etc/my.cnf ########################################################## - name: Check connection to the primary shell: 'echo "SHOW DATABASES;" | mysql -P {{ primary_db.port }} -h 127.0.0.1' - name: Check connection to the replica shell: "echo \"SHOW VARIABLES LIKE 'datadir';\" | mysql -P {{ replica_db.port }} -h 127.0.0.1"