Esta pagina se ve mejor con JavaScript habilitado

Gestión de usuarios MySQL mediante Ansible

 ·  🎃 kr0m

Mediante Ansible podemos gestionar los usuarios de MySQL, es tan sencillo como indicar los parámetros necesarios y ejecutar el playbook.

Para poder gestionar mysql mediante Ansible necesitamos instalar primero ciertas dependencias en todos los servidores a gestionar, según el sistema operativo:

emerge -av dev-python/mysql-python
apt install python-mysqldb

Creamos los directorios necesarios para Ansible:

mkdir /etc/ansible/
chown -R root:kr0m /etc/ansible/
chmod 775 /etc/ansible/

Creamos un grupo de servidores llamado test:

vi /etc/ansible/hosts

[test]
SERVER1
SERVER2

Comprobamos los usuarios actuales:

mysql> SELECT user, host FROM user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| debian-sys-maint | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+

Generamos un playbook que añadirá un usuario llamado bob desde la ip 1.1.1.1 con password 12345 el cual podrá realizar SELECTs sobre todas las tablas de la base de datos test:

vi mysqlUsers.yml

- hosts: test
  tasks:
    - name: Set bob mysql user grants
      mysql_user:
        host: 1.1.1.1
        name: bob
        password: 12345
        priv: "test.*:SELECT"
        state: present

Aplicamos el playbook:

ansible-playbook mysqlUsers.yml

Volvemos a comprobar los usuario y los grants:

mysql> SELECT user, host FROM user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| bob              | 1.1.1.1   |
| debian-sys-maint | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+

mysql> SHOW GRANTS FOR bob@'1.1.1.1';
+---------------------------------------------+
| Grants for bob@1.1.1.1                      |
+---------------------------------------------+
| GRANT USAGE ON *.* TO 'bob'@'1.1.1.1'       |
| GRANT SELECT ON `test`.* TO 'bob'@'1.1.1.1' |
+---------------------------------------------+
Si te ha gustado el artículo puedes invitarme a un RedBull aquí