Назад | Перейти на главную страницу

Добавление пользователя MySQL с разными хостами в SaltStack

У меня есть два сервера, на которых запущено одно и то же приложение, и мне нужно получить доступ к базе данных на одном конкретном сервере базы данных, на котором запущен MySQL.

Оба сервера с приложением должны обращаться к базе данных MySQL с одинаковыми учетными данными. В то же время пользователь MySQL должен создаваться не с подстановочным знаком хоста (например,%), а с IP-адресами обоих серверов.

Обычно это означает, что я создаю двух MySQL-пользователей:

Теперь, как я могу сделать это с помощью состояния MySQL Salt?

Думаю, мне нужно что-то вроде этого:

frank:
  mysql_user.present:
    - host: 10.0.0.1
    - host: 10.0.0.2
    - password: topsecret
  mysql_grants.present:
    - grant: select
    - database: secretdb
    - user: frank
    - host: 10.0.0.1
    - host: 10.0.0.2

Это не работает, поскольку хост объявляется несколько раз. Кроме того, создание «откровенного» пользователя два раза не работает, поскольку Salt будет жаловаться на неуникальное имя пользователя. Я попытался решить эту проблему с помощью Pillars, но также здесь Salt жалуется на несколько определений одного и того же имени пользователя.

Есть идеи, как это решить?

Это должно сработать, если вы добавите их как отдельных пользователей. Вы можете использовать петли и столбы как обычно, но расширенная версия будет выглядеть так:

РЕДАКТИРОВАТЬ: mysql_user.present теперь есть параметр - name: frank

frank_10.0.0.1:
  mysql_user.present:
    - name: frank
    - host: 10.0.0.1
    - password: topsecret
  mysql_grants.present:
    - grant: select
    - database: secretdb.*
    - user: frank
    - host: 10.0.0.1

frank_10.0.0.2:
  mysql_user.present:
    - name: frank
    - host: 10.0.0.2
    - password: topsecret
  mysql_grants.present:
    - grant: select
    - database: secretdb.*
    - user: frank
    - host: 10.0.0.2