Add rhel based distro support
Move from testinfra to ansible verifier.
This commit is contained in:
		
							parent
							
								
									4eeaaa139c
								
							
						
					
					
						commit
						90c31bf3c2
					
				|  | @ -9,7 +9,7 @@ on: | ||||||
| 
 | 
 | ||||||
| jobs: | jobs: | ||||||
|   molecule-distrib-pkg: |   molecule-distrib-pkg: | ||||||
|     name: Molecule |     name: Default | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|  | @ -21,6 +21,12 @@ jobs: | ||||||
|           - debian-10 |           - debian-10 | ||||||
|           - debian-11 |           - debian-11 | ||||||
|           - debian-sid |           - debian-sid | ||||||
|  |           - fedora-36 | ||||||
|  |           - fedora-37 | ||||||
|  |           - almalinux-8 | ||||||
|  |           - almalinux-9 | ||||||
|  |           - rockylinux-8 | ||||||
|  |           - rockylinux-9 | ||||||
|         playbook: |         playbook: | ||||||
|           - converge.yml |           - converge.yml | ||||||
|     steps: |     steps: | ||||||
|  | @ -45,7 +51,7 @@ jobs: | ||||||
|           MOLECULE_PLAYBOOK: ${{ matrix.playbook }} |           MOLECULE_PLAYBOOK: ${{ matrix.playbook }} | ||||||
| 
 | 
 | ||||||
|   molecule-mdbf-pkg: |   molecule-mdbf-pkg: | ||||||
|     name: Molecule (MDBF) |     name: MDBF | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|  | @ -57,8 +63,14 @@ jobs: | ||||||
|           - debian-10 |           - debian-10 | ||||||
|           - debian-11 |           - debian-11 | ||||||
|           - debian-sid |           - debian-sid | ||||||
|  |           - fedora-36 | ||||||
|  |           # - fedora-37 | ||||||
|  |           - almalinux-8 | ||||||
|  |           - almalinux-9 | ||||||
|  |           - rockylinux-8 | ||||||
|  |           - rockylinux-9 | ||||||
|         playbook: |         playbook: | ||||||
|           - converge-mdbf.yml |           - mdbf.yml | ||||||
|         mariadb-version: |         mariadb-version: | ||||||
|           - "10.3" |           - "10.3" | ||||||
|           - "10.4" |           - "10.4" | ||||||
|  | @ -89,18 +101,20 @@ jobs: | ||||||
|             mariadb-version: 10.3 |             mariadb-version: 10.3 | ||||||
|           - distro: debian-sid |           - distro: debian-sid | ||||||
|             mariadb-version: 10.4 |             mariadb-version: 10.4 | ||||||
|           - distro: debian-sid |           - distro: fedora-36 | ||||||
|  |             mariadb-version: 10.3 | ||||||
|  |           - distro: fedora-36 | ||||||
|  |             mariadb-version: 10.4 | ||||||
|  |           - distro: fedora-36 | ||||||
|             mariadb-version: 10.5 |             mariadb-version: 10.5 | ||||||
|           - distro: debian-sid |           - distro: almalinux-9 | ||||||
|             mariadb-version: 10.6 |             mariadb-version: 10.3 | ||||||
|           - distro: debian-sid |           - distro: almalinux-9 | ||||||
|             mariadb-version: 10.7 |             mariadb-version: 10.4 | ||||||
|           - distro: debian-sid |           - distro: rockylinux-9 | ||||||
|             mariadb-version: 10.8 |             mariadb-version: 10.3 | ||||||
|           - distro: debian-sid |           - distro: rockylinux-9 | ||||||
|             mariadb-version: 10.9 |             mariadb-version: 10.4 | ||||||
|           - distro: debian-sid |  | ||||||
|             mariadb-version: 10.10 |  | ||||||
| 
 | 
 | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v3 |       - uses: actions/checkout@v3 | ||||||
|  |  | ||||||
							
								
								
									
										15
									
								
								README.md
								
								
								
								
							
							
						
						
									
										15
									
								
								README.md
								
								
								
								
							|  | @ -71,21 +71,24 @@ Foundation package and it should be easy to change them all (see | ||||||
| 
 | 
 | ||||||
| #### Basic settings | #### Basic settings | ||||||
| 
 | 
 | ||||||
|  | `default value depends on OS` means that the value is overrided at OS level, see | ||||||
|  | [`vars`](./vars). | ||||||
|  | 
 | ||||||
| ```yaml | ```yaml | ||||||
| mariadb_config_file: /etc/mysql/mariadb.cnf | mariadb_config_file: "default value depends on OS" | ||||||
| mariadb_datadir: /var/lib/mysql | mariadb_data_dir: "default value depends on OS" | ||||||
| mariadb_port: 3306 | mariadb_port: 3306 | ||||||
| mariadb_bind_address: 127.0.0.1 | mariadb_bind_address: 127.0.0.1 | ||||||
| mariadb_unix_socket: /run/mysqld/mysqld.sock | mariadb_unix_socket: "default value depends on OS" | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ```yaml | ```yaml | ||||||
| mariadb_basic_settings_raw: | | mariadb_basic_settings_raw: | | ||||||
|   user                  = mysql |   user                  = mysql | ||||||
|   pid-file              = /run/mysqld/mysqld.pid |   pid-file              = {{ mariadb_pid_file }} | ||||||
|   socket                = {{ mariadb_unix_socket }} |   socket                = {{ mariadb_unix_socket }} | ||||||
|   basedir               = /usr |   basedir               = /usr | ||||||
|   datadir               = {{ mariadb_datadir }} |   datadir               = {{ mariadb_data_dir }} | ||||||
|   tmpdir                = /tmp |   tmpdir                = /tmp | ||||||
|   lc-messages-dir       = /usr/share/mysql |   lc-messages-dir       = /usr/share/mysql | ||||||
|   lc_messages           = en_US |   lc_messages           = en_US | ||||||
|  | @ -120,7 +123,7 @@ mariadb_query_cache_raw: | | ||||||
| 
 | 
 | ||||||
| ```yaml | ```yaml | ||||||
| mariadb_logging_raw: | | mariadb_logging_raw: | | ||||||
|   log_error = /var/log/mysql/error.log |   log_error = "default value depends on OS" | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| #### Character sets | #### Character sets | ||||||
|  |  | ||||||
|  | @ -1,9 +1,12 @@ | ||||||
| --- | --- | ||||||
|  | # Python interpreter needs to be specified (pb on Fedora 37 that has python | ||||||
|  | # 3.11) see: https://github.com/ansible/containmint/issues/9 | ||||||
|  | ansible_python_interpreter: /usr/bin/python3 | ||||||
| # Configure the following to use official MariaDB repository | # Configure the following to use official MariaDB repository | ||||||
| # see: https://downloads.mariadb.org/mariadb/repositories | # see: https://downloads.mariadb.org/mariadb/repositories | ||||||
| mariadb_use_official_repo: false | mariadb_use_official_repo: false | ||||||
| mariadb_use_official_repo_url: https://deb.mariadb.org | mariadb_use_official_repo_url: https://deb.mariadb.org | ||||||
| mariadb_use_official_repo_version: 10.5 | mariadb_use_official_repo_version: 10.6 | ||||||
| 
 | 
 | ||||||
| mariadb_enabled_on_startup: true | mariadb_enabled_on_startup: true | ||||||
| # The following is set to true by default but you may consider setting it to | # The following is set to true by default but you may consider setting it to | ||||||
|  | @ -14,18 +17,21 @@ mariadb_can_restart: true | ||||||
| mariadb_overwrite_global_config_file: true | mariadb_overwrite_global_config_file: true | ||||||
| 
 | 
 | ||||||
| # MariaDB configuration file | # MariaDB configuration file | ||||||
| mariadb_config_file: /etc/mysql/mariadb.cnf | mariadb_user: "default value depends on OS" | ||||||
|  | mariadb_config_file: "default value depends on OS" | ||||||
| # Basic settings | # Basic settings | ||||||
| mariadb_datadir: /var/lib/mysql | mariadb_data_dir: "default value depends on OS" | ||||||
| mariadb_port: 3306 | mariadb_port: 3306 | ||||||
| mariadb_bind_address: 127.0.0.1 | mariadb_bind_address: 127.0.0.1 | ||||||
| mariadb_unix_socket: /run/mysqld/mysqld.sock | mariadb_pid_file: "default value depends on OS" | ||||||
|  | mariadb_unix_socket: "default value depends on OS" | ||||||
|  | mariadb_log_error_file: "default value depends on OS" | ||||||
| mariadb_basic_settings_raw: | | mariadb_basic_settings_raw: | | ||||||
|   user                  = mysql |   user                  = {{ mariadb_user }} | ||||||
|   pid-file              = /run/mysqld/mysqld.pid |   pid-file              = {{ mariadb_pid_file }} | ||||||
|   socket                = {{ mariadb_unix_socket }} |   socket                = {{ mariadb_unix_socket }} | ||||||
|   basedir               = /usr |   basedir               = /usr | ||||||
|   datadir               = {{ mariadb_datadir }} |   datadir               = {{ mariadb_data_dir }} | ||||||
|   tmpdir                = /tmp |   tmpdir                = /tmp | ||||||
|   lc-messages-dir       = /usr/share/mysql |   lc-messages-dir       = /usr/share/mysql | ||||||
|   lc_messages           = en_US |   lc_messages           = en_US | ||||||
|  | @ -52,7 +58,7 @@ mariadb_query_cache_raw: | | ||||||
| 
 | 
 | ||||||
| # Logging | # Logging | ||||||
| mariadb_logging_raw: | | mariadb_logging_raw: | | ||||||
|   log_error = /var/log/mysql/error.log |   log_error = {{ mariadb_log_error_file }} | ||||||
| 
 | 
 | ||||||
| # Character sets | # Character sets | ||||||
| mariadb_character_sets_raw: | | mariadb_character_sets_raw: | | ||||||
|  |  | ||||||
|  | @ -16,4 +16,10 @@ provisioner: | ||||||
|   playbooks: |   playbooks: | ||||||
|     converge: ${MOLECULE_PLAYBOOK:-converge.yml} |     converge: ${MOLECULE_PLAYBOOK:-converge.yml} | ||||||
| verifier: | verifier: | ||||||
|   name: testinfra |   name: ansible | ||||||
|  | scenario: | ||||||
|  |   test_sequence: | ||||||
|  |     - create | ||||||
|  |     - converge | ||||||
|  |     - idempotence | ||||||
|  |     - verify | ||||||
|  |  | ||||||
|  | @ -1,70 +0,0 @@ | ||||||
| import os |  | ||||||
| 
 |  | ||||||
| # pylint: disable=import-error |  | ||||||
| import testinfra.utils.ansible_runner |  | ||||||
| 
 |  | ||||||
| testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( |  | ||||||
|     os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all') |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def test_passwd_file(host): |  | ||||||
|     passwd = host.file("/etc/passwd") |  | ||||||
|     assert passwd.contains("mysql") |  | ||||||
|     assert passwd.user == "root" |  | ||||||
|     assert passwd.group == "root" |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def test_mariadb_is_installed(host): |  | ||||||
|     package = host.package("mariadb-server") |  | ||||||
|     assert package.is_installed |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def test_ensure_mariadb_is_listening_on_requiered_port(host): |  | ||||||
|     assert host.socket("tcp://0.0.0.0:3306").is_listening |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def test_mariadb_enabled_and_running(host): |  | ||||||
|     assert host.service("mariadb").is_running |  | ||||||
|     assert host.service("mariadb").is_enabled |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def test_ensure_custom_config_is_applied(host): |  | ||||||
|     config = host.file("/etc/mysql/mariadb.cnf") |  | ||||||
|     assert config.contains("datadir") |  | ||||||
|     assert config.user == "root" |  | ||||||
|     assert config.group == "root" |  | ||||||
|     assert config.mode == 0o644 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def test_ensure_innodb_is_enabled(host): |  | ||||||
|     assert host.run("mariadb -Bse 'SHOW ENGINES' |\ |  | ||||||
|             grep -qE '^InnoDB.DEFAULT.*YES.YES.YES$'").rc == 0 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def test_ensure_system_db_exist(host): |  | ||||||
|     assert host.run("mariadb -Bse 'SHOW DATABASES' |\ |  | ||||||
|             grep -q '^mysql$'").rc == 0 |  | ||||||
|     assert host.run("mariadb -Bse 'SHOW DATABASES' |\ |  | ||||||
|             grep -q '^information_schema$'").rc == 0 |  | ||||||
|     assert host.run("mariadb -Bse 'SHOW DATABASES' |\ |  | ||||||
|             grep -q '^performance_schema$'").rc == 0 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def test_ensure_test_db_exist(host): |  | ||||||
|     assert host.run("mariadb -Bse 'SHOW DATABASES' |\ |  | ||||||
|             grep -q '^db1'").rc == 0 |  | ||||||
|     assert host.run("mariadb -Bse 'SHOW DATABASES' |\ |  | ||||||
|             grep -q '^db2'").rc == 0 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def test_some_sql_queries(host): |  | ||||||
|     assert host.run("mariadb -e 'CREATE DATABASE db'").rc == 0 |  | ||||||
|     assert host.run("mariadb -e 'CREATE TABLE\ |  | ||||||
|             db.t_innodb(a1 SERIAL, c1 CHAR(8)) ENGINE=InnoDB;\ |  | ||||||
|             INSERT INTO db.t_innodb VALUES (1,\"foo\"),(2,\"bar\")'").rc == 0 |  | ||||||
|     assert host.run("mariadb -e 'CREATE FUNCTION db.f()\ |  | ||||||
|             RETURNS INT DETERMINISTIC RETURN 1'").rc == 0 |  | ||||||
|     assert host.run("mariadb -e 'SHOW TABLES IN db'").rc == 0 |  | ||||||
|     assert host.run("mariadb -e 'SELECT * FROM db.t_innodb;\ |  | ||||||
|             INSERT INTO db.t_innodb VALUES (3,\"foo\"),(4,\"bar\")'").rc == 0 |  | ||||||
|     assert host.run("mariadb -e 'SELECT db.f()'").rc == 0 |  | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | ../../../vars/Debian.yml | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | ../../../vars/RedHat.yml | ||||||
|  | @ -0,0 +1,116 @@ | ||||||
|  | --- | ||||||
|  | - name: Verify | ||||||
|  |   hosts: all | ||||||
|  |   gather_facts: true | ||||||
|  | 
 | ||||||
|  |   tasks: | ||||||
|  |     - name: Load OS-specific vars | ||||||
|  |       ansible.builtin.include_vars: "{{ lookup('first_found', params) }}" | ||||||
|  |       vars: | ||||||
|  |         params: | ||||||
|  |           files: | ||||||
|  |             - "{{ ansible_distribution }}.yml" | ||||||
|  |             - "{{ ansible_os_family }}.yml" | ||||||
|  |           paths: | ||||||
|  |             - "vars" | ||||||
|  | 
 | ||||||
|  |     - name: Gather package facts | ||||||
|  |       ansible.builtin.package_facts: | ||||||
|  |         manager: auto | ||||||
|  | 
 | ||||||
|  |     - name: Verify Packages | ||||||
|  |       ansible.builtin.assert: | ||||||
|  |         that: "'mariadb-server' in ansible_facts.packages|lower" | ||||||
|  | 
 | ||||||
|  |     - name: Register {{ mariadb_config_file }} | ||||||
|  |       ansible.builtin.stat: | ||||||
|  |         path: "{{ mariadb_config_file }}" | ||||||
|  |       register: conf | ||||||
|  | 
 | ||||||
|  |     - name: Check {{ mariadb_config_file }} | ||||||
|  |       ansible.builtin.assert: | ||||||
|  |         that: | ||||||
|  |           - conf.stat.exists is true | ||||||
|  |           - conf.stat.pw_name == 'root' | ||||||
|  |           - conf.stat.gr_name == 'root' | ||||||
|  | 
 | ||||||
|  |     - name: Register {{ mariadb_data_dir }} | ||||||
|  |       ansible.builtin.stat: | ||||||
|  |         path: "{{ mariadb_data_dir }}" | ||||||
|  |       register: datadir | ||||||
|  | 
 | ||||||
|  |     - name: Check {{ mariadb_data_dir }} | ||||||
|  |       ansible.builtin.assert: | ||||||
|  |         that: | ||||||
|  |           - datadir.stat.isdir is true | ||||||
|  |           - datadir.stat.pw_name == "{{ mariadb_user }}" | ||||||
|  |           - datadir.stat.gr_name == "{{ mariadb_user }}" | ||||||
|  | 
 | ||||||
|  |     - name: Register {{ mariadb_log_dir }} | ||||||
|  |       ansible.builtin.stat: | ||||||
|  |         path: "{{ mariadb_log_dir }}" | ||||||
|  |       register: logdir | ||||||
|  | 
 | ||||||
|  |     - name: Check {{ mariadb_log_dir }} | ||||||
|  |       ansible.builtin.assert: | ||||||
|  |         that: | ||||||
|  |           - logdir.stat.isdir is true | ||||||
|  |           - logdir.stat.pw_name == "{{ mariadb_user }}" | ||||||
|  |           - logdir.stat.gr_name == "{{ mariadb_user }}" | ||||||
|  | 
 | ||||||
|  |     - name: Get mariadb service status | ||||||
|  |       ansible.builtin.systemd: | ||||||
|  |         name: "mariadb" | ||||||
|  |       register: mariadb_service | ||||||
|  | 
 | ||||||
|  |     - name: Check that mariadb service is active | ||||||
|  |       ansible.builtin.assert: | ||||||
|  |         that: | ||||||
|  |           - mariadb_service.status.ActiveState == 'active' | ||||||
|  | 
 | ||||||
|  |     - name: Check that 127.0.0.1:3306 is listening | ||||||
|  |       ansible.builtin.wait_for: | ||||||
|  |         port: 3306 | ||||||
|  |         timeout: 2 | ||||||
|  | 
 | ||||||
|  |     - name: Get MariaDB version | ||||||
|  |       ansible.builtin.shell: | | ||||||
|  |         mariadb -Bse 'STATUS' | grep "^Server version:" | ||||||
|  |       register: version | ||||||
|  |       when: "{{ lookup('env', 'MARIADB_VERSION') }}" | ||||||
|  | 
 | ||||||
|  |     - name: Check MariaDB version | ||||||
|  |       ansible.builtin.assert: | ||||||
|  |         that: | ||||||
|  |           - "'{{ lookup('env', 'MARIADB_VERSION') }}' in version.stdout" | ||||||
|  |         msg: "{{ version.stdout }}" | ||||||
|  |       when: "{{ lookup('env', 'MARIADB_VERSION') }}" | ||||||
|  | 
 | ||||||
|  |     - name: Check that Innodb engine is enabled (and default) | ||||||
|  |       ansible.builtin.shell: | | ||||||
|  |         mariadb -Bse 'SHOW ENGINES' | grep -qE '^InnoDB.DEFAULT.*YES.YES.YES$' | ||||||
|  | 
 | ||||||
|  |     - name: Check that default db exist | ||||||
|  |       ansible.builtin.shell: | | ||||||
|  |         mariadb -Bse 'SHOW DATABASES' | grep -q '^{{ item }}$' | ||||||
|  |       loop: | ||||||
|  |         - mysql | ||||||
|  |         - information_schema | ||||||
|  |         - performance_schema | ||||||
|  | 
 | ||||||
|  |     - name: Check that test db exist | ||||||
|  |       ansible.builtin.shell: | | ||||||
|  |         mariadb -Bse 'SHOW DATABASES' | grep -q '^{{ item }}$' | ||||||
|  |       loop: | ||||||
|  |         - db1 | ||||||
|  |         - db2 | ||||||
|  | 
 | ||||||
|  |     - name: Do some SQL queries | ||||||
|  |       ansible.builtin.shell: | | ||||||
|  |         mariadb -Bse 'DROP DATABASE IF EXIST db' | ||||||
|  |         mariadb -Bse 'CREATE DATABASE db' | ||||||
|  |         mariadb -e 'CREATE TABLE db.t_innodb(a1 SERIAL, c1 CHAR(8)) ENGINE=InnoDB; INSERT INTO db.t_innodb VALUES (1,"foo"),(2,"bar")' | ||||||
|  |         mariadb -e 'CREATE FUNCTION db.f() RETURNS INT DETERMINISTIC RETURN 1' | ||||||
|  |         mariadb -e 'SHOW TABLES IN db' | ||||||
|  |         mariadb -e 'SELECT * FROM db.t_innodb; INSERT INTO db.t_innodb VALUES (3,"foo"),(4,"bar")' | ||||||
|  |         mariadb -e 'SELECT db.f()' | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| ansible | ansible | ||||||
| molecule==4.0.* | molecule==4.0.* | ||||||
| molecule-podman | molecule-podman | ||||||
| pytest-testinfra |  | ||||||
|  |  | ||||||
|  | @ -1,8 +1,7 @@ | ||||||
| --- | --- | ||||||
| - name: Install cron package | - name: Install cron package | ||||||
|   ansible.builtin.apt: |   ansible.builtin.package: | ||||||
|     package: |     name: "{{ mariadb_cron_package_name }}" | ||||||
|       - cron |  | ||||||
|     state: present |     state: present | ||||||
| 
 | 
 | ||||||
| - name: Deploy DB dump script | - name: Deploy DB dump script | ||||||
|  |  | ||||||
|  | @ -9,13 +9,16 @@ | ||||||
|     force: "{{ mariadb_overwrite_global_config_file }}" |     force: "{{ mariadb_overwrite_global_config_file }}" | ||||||
|   notify: Restart mariadb |   notify: Restart mariadb | ||||||
| 
 | 
 | ||||||
| - name: Create datadir if it does not exist | - name: Make sure datadir and log dir exist | ||||||
|   ansible.builtin.file: |   ansible.builtin.file: | ||||||
|     path: "{{ mariadb_datadir }}" |     path: "{{ item }}" | ||||||
|     state: directory |     state: directory | ||||||
|     owner: mysql |     owner: "{{ mariadb_user }}" | ||||||
|     group: mysql |     group: "{{ mariadb_user }}" | ||||||
|     mode: 0755 |     mode: 0755 | ||||||
|  |   loop: | ||||||
|  |     - "{{ mariadb_data_dir }}" | ||||||
|  |     - "{{ mariadb_log_dir }}" | ||||||
| 
 | 
 | ||||||
| - name: Ensure MariaDB is started and enabled on boot | - name: Ensure MariaDB is started and enabled on boot | ||||||
|   ansible.builtin.service: |   ansible.builtin.service: | ||||||
|  |  | ||||||
|  | @ -1,6 +1,21 @@ | ||||||
| --- | --- | ||||||
| - name: include task setup.yml | - name: Load OS-specific vars | ||||||
|   import_tasks: setup.yml |   ansible.builtin.include_vars: "{{ lookup('first_found', params) }}" | ||||||
|  |   vars: | ||||||
|  |     params: | ||||||
|  |       files: | ||||||
|  |         - "{{ ansible_distribution }}.yml" | ||||||
|  |         - "{{ ansible_os_family }}.yml" | ||||||
|  |       paths: | ||||||
|  |         - "vars" | ||||||
|  | 
 | ||||||
|  | - name: include task setup_debian.yml | ||||||
|  |   import_tasks: setup_debian.yml | ||||||
|  |   when: ansible_os_family == "Debian" | ||||||
|  | 
 | ||||||
|  | - name: include task setup_redhat.yml | ||||||
|  |   import_tasks: setup_redhat.yml | ||||||
|  |   when: ansible_os_family == "RedHat" | ||||||
| 
 | 
 | ||||||
| - name: include task configure.yml | - name: include task configure.yml | ||||||
|   import_tasks: configure.yml |   import_tasks: configure.yml | ||||||
|  |  | ||||||
|  | @ -19,11 +19,32 @@ | ||||||
|     mode: "0644" |     mode: "0644" | ||||||
|   when: mariadb_use_official_repo |   when: mariadb_use_official_repo | ||||||
| 
 | 
 | ||||||
|  | - name: Determine distribution name (Debian sid pb) | ||||||
|  |   ansible.builtin.set_fact: | ||||||
|  |     distribution: "{% if 'n/a' in ansible_distribution_release %}sid{% else %}{{ ansible_distribution_release }}{% endif %}" | ||||||
|  | 
 | ||||||
| - name: Setup mariadb repository sourcelist entry | - name: Setup mariadb repository sourcelist entry | ||||||
|   ansible.builtin.copy: |   ansible.builtin.copy: | ||||||
|     dest: /etc/apt/sources.list.d/mariadb.list |     dest: /etc/apt/sources.list.d/mariadb.list | ||||||
|     content: | |     content: | | ||||||
|       deb {{ mariadb_use_official_repo_url }}/{{ mariadb_use_official_repo_version }}/{{ ansible_distribution | lower() }} {{ ansible_distribution_release }} main |       # Ansible managed | ||||||
|  |       deb {{ mariadb_use_official_repo_url }}/{{ mariadb_use_official_repo_version }}/{{ ansible_distribution | lower() }} {{ distribution }} main | ||||||
|  |     owner: root | ||||||
|  |     group: root | ||||||
|  |     mode: "0644" | ||||||
|  |   when: mariadb_use_official_repo | ||||||
|  | 
 | ||||||
|  | - name: Prefer MariaDB repo over Debian repo | ||||||
|  |   ansible.builtin.copy: | ||||||
|  |     dest: /etc/apt/preferences.d/release | ||||||
|  |     content: | | ||||||
|  |       # Ansible managed | ||||||
|  |       Package: * | ||||||
|  |       Pin: origin {{ mariadb_use_official_repo_url | urlsplit('hostname') }} | ||||||
|  |       Pin-Priority: 1000 | ||||||
|  |     owner: root | ||||||
|  |     group: root | ||||||
|  |     mode: "0644" | ||||||
|   when: mariadb_use_official_repo |   when: mariadb_use_official_repo | ||||||
| 
 | 
 | ||||||
| - name: Install packages | - name: Install packages | ||||||
|  | @ -0,0 +1,42 @@ | ||||||
|  | --- | ||||||
|  | # //TEMP find a way to handle multiarch (see mirror.mariadb.org). | ||||||
|  | - name: Setup mariadb repository | ||||||
|  |   ansible.builtin.copy: | ||||||
|  |     dest: /etc/yum.repos.d/MariaDB.repo | ||||||
|  |     content: | | ||||||
|  |       # https://mariadb.org/download/ | ||||||
|  |       [mariadb] | ||||||
|  |       name = MariaDB | ||||||
|  |       {% if ansible_distribution == "Fedora" %} | ||||||
|  |       baseurl = https://yum.mariadb.org/{{ mariadb_use_official_repo_version }}/fedora{{ ansible_distribution_major_version }}-amd64 | ||||||
|  |       {% else %} | ||||||
|  |       baseurl = https://yum.mariadb.org/{{ mariadb_use_official_repo_version }}/rhel{{ ansible_distribution_major_version }}-amd64 | ||||||
|  |       {% endif %} | ||||||
|  |       gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB | ||||||
|  |       module_hotfixes = 1 | ||||||
|  |       gpgcheck = 1 | ||||||
|  |     owner: root | ||||||
|  |     group: root | ||||||
|  |     mode: "0644" | ||||||
|  |   when: mariadb_use_official_repo | ||||||
|  | 
 | ||||||
|  | - name: Install packages | ||||||
|  |   ansible.builtin.dnf: | ||||||
|  |     name: | ||||||
|  |       - mariadb-server | ||||||
|  |       - python3-PyMySQL | ||||||
|  |     state: present | ||||||
|  | 
 | ||||||
|  | - name: Check if mariadb command exists | ||||||
|  |   ansible.builtin.stat: | ||||||
|  |     path: /usr/bin/mariadb | ||||||
|  |   register: mariadb_cmd | ||||||
|  | 
 | ||||||
|  | - name: Make sure that mariadb command exists | ||||||
|  |   ansible.builtin.file: | ||||||
|  |     src: /usr/bin/mysql | ||||||
|  |     dest: /usr/bin/mariadb | ||||||
|  |     owner: root | ||||||
|  |     group: root | ||||||
|  |     state: link | ||||||
|  |   when: mariadb_cmd.stat.exists is false | ||||||
|  | @ -0,0 +1,9 @@ | ||||||
|  | --- | ||||||
|  | mariadb_user: mysql | ||||||
|  | mariadb_config_file: "/etc/mysql/mariadb.cnf" | ||||||
|  | mariadb_data_dir: "/var/lib/mysql" | ||||||
|  | mariadb_pid_file: "/run/mysqld/mysqld.pid" | ||||||
|  | mariadb_unix_socket: "/run/mysqld/mysqld.sock" | ||||||
|  | mariadb_log_dir: "/var/log/mysql" | ||||||
|  | mariadb_log_error_file: "{{ mariadb_log_dir }}/error.log" | ||||||
|  | mariadb_cron_package_name: "cron" | ||||||
|  | @ -0,0 +1,9 @@ | ||||||
|  | --- | ||||||
|  | mariadb_user: mysql | ||||||
|  | mariadb_config_file: "/etc/my.cnf.d/mariadb-server.cnf" | ||||||
|  | mariadb_data_dir: "/var/lib/mysql" | ||||||
|  | mariadb_pid_file: "/run/mysqld.pid" | ||||||
|  | mariadb_unix_socket: "/var/lib/mysql/mysql.sock" | ||||||
|  | mariadb_log_dir: "/var/log/mariadb" | ||||||
|  | mariadb_log_error_file: "{{ mariadb_log_dir }}/error.log" | ||||||
|  | mariadb_cron_package_name: "cronie" | ||||||
		Loading…
	
		Reference in New Issue