У меня есть два сервера, на которых запущено одно и то же приложение, и мне нужно получить доступ к базе данных на одном конкретном сервере базы данных, на котором запущен 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