2015-05-15 3 views
4

Я использую Ansible для обработки разностей конечных точек для разных сред. Это делается с помощью переменных и расширения ansible-xml.Разделительные сейфовые хранилища для разных сред?

Например, у меня есть задача с именем «endpoints.yml» в роли, называемой «myapp». Эта задача задает множество конфигурационных параметров в файлах конфигурации, заменяя переменные.

/roles/myapp/tasks/endpoints.yml

—> set value in app config file to: {{ db_user }} 
—> set value in app config file to: {{ db_password }} 

Так как моя, не прод среда разделяет единую конечную точку, значение этих переменных могут быть сконфигурированы в файле по умолчанию этой роли:

/roles/myapp/defaults/main.yml

—> db_user: myuser_ro 
—> db_passwordd: some_password 

Для прод ан ружающая среда, я перезапись по умолчанию с group_variable (так как это имеет преимущество):

/среды/прод/group_vars/myapp_servers

—> db_user: produser_ro 
—> db_password: some_other_password 

Это все прекрасно работает и позволяет нам использовать один playbook/role для всех сред. Тем не менее, я хочу двигаться, чтобы воспользоваться преимуществами скрытого хранилища, чтобы переместить значения пароля из этих файлов и в зашифрованный файл.

Тем не менее, все еще будут разные значения для prod и non-prod. Я могу создать новый файл «vars» в роли «pass.yml», зашифровать его с помощью скрытого хранилища, а затем ссылаться на него с помощью задачи «include_vars: pass.yml».

Но это не объясняет, как я учитываю необходимость использования разных (зашифрованных) переменных для разных сред.

Любые предложения?

+0

Я полагаю, что лучшее решение будет иметь несколько хранилищ и ссылаться на них с --vault-пароль-файлом при вызывающем анзибле пьес: (то есть: myapp_prod_vault.yml, myapp_nonprod_vault.yml) – mcdowellstl

+0

Подождите, почему вы не можете использовать group_vars и иметь отдельные файлы хранилища для каждой группы? Ваш вопрос довольно запутанный, трудно понять, что именно вы пытаетесь объяснить. – Mxx

ответ

2

Несколько паролей хранилища в одной управляемой конфигурации в настоящее время не поддерживаются доступным хранилищем. Вы должны использовать один и тот же пароль хранилища для шифрования как файлов продуктов prod, так и non-prod.

+0

Спасибо кому-то, кто поддержал мой -1, который не заслужил :) –

3

Похоже, вы используете структуру с несколькими средами, такую ​​как this. В этом случае вы можете создать файл хранилища для каждой среды.

environments 
├── dev 
│   └── group_vars 
│    └── all 
│     └── secrets 
└── prod 
    └── group_vars 
     └── all 
      └── secrets 

В каждом файле "secrets" может быть свой собственный пароль.

0

Прошло время со времени предыдущих ответов, Ansible 2.2 ограничивает использование одного пароля хранилища для всего исполнения плейбука, но это не мешает вам иметь разные файлы, зашифрованные с использованием разных паролей хранилища, если они не используются на одна и та же.

В нескольких словах у вас может быть тестовая среда с паролем хранилища, отличным от производства.

Я РоС, вы можете проверить его здесь:

https://github.com/brianmori/ansible-poc

Смежные вопросы