在 SaltStack 中添加具有不同主机的 MySQL 用户

在 SaltStack 中添加具有不同主机的 MySQL 用户

我有两台运行相同应用程序的服务器,需要访问一台运行 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

相关内容