Я пытаюсь использовать mysql-формулу, используя ее для настройки базы данных и пользователя. Но я хотел бы использовать настроенный пароль в другом месте, и я не понял, как это сделать. Любая помощь приветствуется.
Вот пример столба: https://github.com/saltstack-formulas/mysql-formula/blob/master/pillar.example и предположим, что я пытаюсь получить оттуда доступ к паролю Фрэнка.
Простой ответ
Чтобы получить доступ к паролю Фрэнка из вашего файла состояний / конфигурации:
{% 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
Не очень гибко устанавливать переменную для каждого пользователя, которого вы хотите иметь. Что ж, вы можете сделать это довольно просто, просто добавив пользователя в столб.
Из этого примера файла столбца вы можете динамически создавать пользователей на основе того, что находится в столбце в вашем состоянии.
# 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.
Вы можете получить что угодно из столба, а затем использовать Jinja для улучшения. Вы уже можете добавить эту ссылку в закладки с помощью шаблонов и примеров Jinja: http://jinja.pocoo.org/docs/dev/templates/