Как предоставить права администратора сервера MySQL (SUPER, RELOAD…) с ansible?

Есть ли способ предоставить привилегии администратора MySQL с помощью модуля Ansible mysql_user (или с помощью любого другого модуля)? Я хочу установить для пользователей привилегии SUPER, RELOAD и SHOW DATABASES, а также некоторые другие специфичные для базы данных привилегии.

Следующая базовая настройка хорошо работает для меня:

- name: Set user privileges
  mysql_user:
    user={{ mysql_user }}
    password={{ mysql_password }}
    state=present
    priv={{ item }}
  with_items:
    - 'somedatabase.*:ALL'
    - 'someotherdatabase.*:ALL'

... приводит к:

TASK: [db | Set user privileges]
**********************************************
ok: [dbuser] => (item=somedatabase.*:ALL)
ok: [dbuser] => (item=someotherdatabase.*:ALL)

Следующая настройка продолжает говорить «изменено» "и привилегии - это не то, что можно было бы ожидать:

- name: Set user privileges
  mysql_user:
    user={{ mysql_user }}
    password={{ mysql_password }}
    state=present
    priv={{ item }}
  with_items:
    - '*.*:SUPER,RELOAD,SHOW\ DATABASES'
    - 'somedatabase.*:ALL'
    - 'someotherdatabase.*:ALL'

(повторный) запуск:

TASK: [db | Set user privileges]
**********************************************
changed: [dbuser] => (item=*.*:SUPER,RELOAD,SHOW\ DATABASES)
changed: [dbuser] => (item=somedatabase.*:ALL)
ok: [dbuser] => (item=someotherdatabase.*:ALL)

приводит к:

mysql> show grants for 'dbuser'@'localhost';
+---------------------------------------------------------------------------------------------------------------+
| Grants for dbuser@localhost                                                                                   |
+---------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'dbuser'@'localhost' IDENTIFIED BY PASSWORD '*2046D2DDAE359F311435E8B4D3776EFE13FB584C' |
| GRANT ALL PRIVILEGES ON `somedatabase`.* TO 'dbuser'@'localhost'                                              |
| GRANT ALL PRIVILEGES ON `someotherdatabase`.* TO 'dbuser'@'localhost'                                         |
+---------------------------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)

Кто-нибудь знает, как to:

  1. set SUPER, RELOAD и SHOW DATABASE admin. привилегии?
  2. сделать конфигурацию идемпотентной?
8
задан Ikar Pohorský 9 April 2014 в 10:23
поделиться