![如何从 mysql-formula pillar 访问数据?](https://linux22.com/image/643226/%E5%A6%82%E4%BD%95%E4%BB%8E%20mysql-formula%20pillar%20%E8%AE%BF%E9%97%AE%E6%95%B0%E6%8D%AE%EF%BC%9F.png)
我正在尝试使用 mysql-formula,使用它的支柱来设置数据库和用户。但是,我想在其他地方使用配置的密码,但我还不知道该怎么做。任何帮助都值得感激。
以下是示例支柱: https://github.com/saltstack-formulas/mysql-formula/blob/master/pillar.example 并假设我正尝试从那里访问弗兰克的密码。
答案1
简单答案
要从你的 states/configuration 文件访问 Frank 的密码:
{% set franck_pwd = salt['pillar.get']('mysql:user:franck:password','') -%}
frank:
user.present:
- password: {{ franck_pwd }}
- host: localhost
在这里,我们只需设置一个变量,并将该位置的支柱数据分配给它
mysql:user:franck:password
当您在 Pillar 顶部文件中将此 pilar .sls 提供给主机后,它将允许您获取存储在 Pillar 中的密码。
先进的
现在您可以从状态和配置文件访问支柱数据 -
不要忘记添加到配置文件定义以便 Jinja 可以被解释
my_config_file:
file.managed:
- template: jinja
为每个想要的用户设置一个变量不太灵活。其实,只需在 pillar 中添加用户,就可以完成这个任务。
从该支柱文件示例中,您可以仅根据您所在州的支柱内容动态创建用户。
# Loop on users and get all args
{% for user, args in salt['pillar.get']('mysql:user','{}').iteritems() %}
# Use your vars!
{{ user }}:
user.present:
- password: args['password']
- host: args['host']
{% enfor %}
这实际上更多的是正确使用 jinja 的问题,而不是从 pillar 获取数据的问题。
您可以从 pillar 获取任何东西,然后使用 Jinja 进行改进。您已经可以使用 Jinja 模板和示例为该链接添加书签:http://jinja.pocoo.org/docs/dev/templates/