我有两台运行相同应用程序的服务器,需要访问一台运行 MySQL 的特定数据库服务器上的数据库。
两个运行该应用程序的服务器都应使用相同的用户凭据访问 MySQL DB。同时,不应使用主机通配符(例如 %)创建 MySQL 用户,而应使用两个服务器的 IP。
通常,这意味着我创建两个 MySQL 用户:
- 用户:frank,密码:topsecret,主机:10.10.0.1
- 用户:frank,密码:topsecret,主机:10.10.0.2
现在,如何使用 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
由于主机声明多次,因此此方法不起作用。此外,两次创建用户“frank”也不起作用,因为 Salt 会抱怨用户名不唯一。我尝试通过 Pillars 解决这个问题,但这里 Salt 也抱怨同一个用户名有多个定义。
有什么想法可以解决这个问题吗?
答案1
如果您将它们添加为单独的用户,这应该可以工作。您可以像往常一样使用循环和支柱,但扩展版本将如下所示:
编辑: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