# # task: install maraidb-server # # author Björn Hase, # # # # check if maridb is already installed # - shell: dpkg -l | grep -e mariadb-server | cat register: mariadb_installed - name: if mariadb is already installed, end host meta: end_host when: mariadb_installed.stdout | length > 0 # # adding list in sources # - name: create the file, if it doesnt exist already stat: path: /etc/apt/sources.list.d/mariadb.list register: list # # getting mariadb # - name: prepare install shell: 'curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version="mariadb-{{ mariadb_version }}"' when: not list.stat.exists # # adding packages # - name: mariadb / install apt: update_cache: yes name: - mariadb-server - mariadb-client - python3-mysqldb # # add user to mysql # - name: mariadb / add current user to mysql user: name: "{{ ansible_user }}" groups: mysql append: yes # # getting anonymous users and remove them # - name: Get list of hosts for the anonymous user. community.mysql.mysql_query: login_db: "mysql" login_unix_socket: "{{ mariadb_socket }}" query: SELECT Host FROM mysql.user WHERE User = %s positional_args: - '' register: mariadb_anonymous_hosts - name: Remove anonymous MariaDB users. community.mysql.mysql_query: login_db: "mysql" login_unix_socket: "{{ mariadb_socket }}" query: DELETE FROM mysql.user WHERE User=%s AND Host=%s positional_args: - '' - "{{ item.Host }}" loop: "{{ mariadb_anonymous_hosts.query_result | first }}" when: - not ansible_check_mode - mariadb_anonymous_hosts.rowcount[0] != 0 # # getting root users and remove remote root logins # - name: Get list of hosts for the root user. community.mysql.mysql_query: login_db: "mysql" login_unix_socket: "{{ mariadb_socket }}" query: SELECT Host FROM mysql.user WHERE User = %s ORDER BY (Host='localhost') ASC positional_args: - "{{ mariadb_admin_user }}" register: mariadb_root_hosts - name: Disallow root login remotely community.mysql.mysql_user: name: "{{ mariadb_admin_user }}" login_unix_socket: "{{ mariadb_socket }}" host: "{{ item.Host }}" priv: "*.*:ALL,GRANT" state: absent loop: '{{ mariadb_root_hosts.query_result[0] | rejectattr("Host", "in", "localhost,::1,127.0.0.1") | list }}' when: not ansible_check_mode # # remove all test databses # - name: Remove MariaDB test database. community.mysql.mysql_db: name: test state: absent login_unix_socket: "{{ mariadb_socket }}" # # Certificates # - include_tasks: certificates.yml - include_tasks: chown.yml # # Configure # - include_tasks: configure.yml