Back (Current repo: ansible-playbooks)

A repository for remembering ansible how-to as a quick reference. I do not grind yaml daily.
To clone this repository:
git clone https://git.viktor1993.net/ansible-playbooks.git
Log | Download | Files | Refs

mariadb-install.yml (3543B)


---
- name: MariaDB installation
  hosts: all
  become: yes
  become_user: root
  become_method: sudo

  tasks:
    - name: include variables
      include_vars:
        file: ../../inventories/common/db_variables.yml
  
    - name: Gather service facts
      service_facts:
  
    - name: Gather package facts
      package_facts:
        manager: auto
  
    - name: exit if mariadb service is running
      fail:
        msg: "Playbook halted: MariaDB service is actively running on this host."
      when:
        - "'mariadb.service' in ansible_facts.services"
        - "ansible_facts.services['mariadb.service'].state == 'running'"
  
    - name: exit if mariadb-server is already installed
      fail:
        msg: "Playbook halted: mariadb-server package is already installed on this host."
      when: "'mariadb-server' in ansible_facts.packages"
  
    - name: Install prerequisite packages
      apt:
        name:
          - apt-transport-https
          - ca-certificates
          - gnupg
        state: present
        update_cache: true
  
    - name: Download MariaDB signing key
      get_url:
        url: "{{ key_url }}"
        dest: /usr/share/keyrings/mariadb-keyring.asc
        mode: '0644'
  
    - name: Add MariaDB APT repository
      apt_repository:
        repo: "{{ repo_deb }}"
        state: present
        filename: mariadb

    - name: Install mariadb packages
      apt:
        name: "{{ mariadb_packages }}"
        state: present
        update_cache: true

    - name: lookup mysql user
      ansible.builtin.getent:
        database: passwd
        key: mysql
        fail_key: false

    - name: exit if user not present
      fail:
        msg: "Playbook halted: mysql user is not present"
      when: "'mysql' not in ansible_facts.getent_passwd or ansible_facts.getent_passwd['mysql'] == None"

    - name: Ensure /etc/my.cnf.d exists
      file:
        path: /etc/my.cnf.d
        state: directory
        owner: root
        group: root
        mode: '0755'
  
    - name: create zz-local.cnf with specific params
      copy:
        src: ../../files/zz-local.cnf
        dest: /etc/my.cnf.d/zz-local.cnf
        owner: root
        group: root
        mode: '0644'
  
    - name: Check /var/lib/mysql/.log exists
      stat:
        path: /var/lib/mysql/.log
      register: log_dir
  
    - name: create it if it does not
      file:
        path: /var/lib/mysql/.log
        state: directory
        owner: mysql
        group: mysql
        mode: '0755'
      when: log_dir.stat.exists == false
  
    - name: Check /var/lib/mysql/.tmp exists
      stat:
        path: /var/lib/mysql/.tmp
      register: tmp_dir
  
    - name: create it if it does not
      file:
        path: /var/lib/mysql/.tmp
        state: directory
        owner: mysql
        group: mysql
        mode: '0755'
      when: tmp_dir.stat.exists == false
  
    - name: check /etc/systemd/system/mariadb.service.d exists
      file:
        path: /etc/systemd/system/mariadb.service.d
        state: directory
        owner: root
        group: root
        mode: '0755'
  
    - name: create systemd override with specified params
      copy:
        src: ../../files/override.conf
        dest: /etc/systemd/system/mariadb.service.d/override.conf
        owner: root
        group: root
        mode: '0644'
  
    - name: reload systemd unit file definitions
      command: systemctl daemon-reload
  
    - name: start mariadb
      systemd:
        name: mariadb
        state: started
        enabled: true