Я работаю над автоматизацией Ansible для сетей Cumulus-Linux (whitebox). Я использую Ansible Vault для шифрования паролей в моих плейбуках для локальных учетных записей, которые я хочу создать на новом переключателе Cumulus. Однако, когда я запускаю playbook, кажется, что ansible может читать переменные имени пользователя из моего зашифрованного хранилища файла, но не переменные пароля, которые я определил. Невозможно проверить, для чего Ansible устанавливает этот пароль; конечно, пароли зашифрованы даже в выводе -vvvv Ansible.
В каждом примере Ansible Vault, который я видел, мои переменные определены как таковые (незашифрованная переменная, ссылающаяся на зашифрованную):
- "user" получает свое значение от "vault_user", который находится в моем файле переменных, зашифрованных хранилищем.
- "пароль" получает свое значение от "vault_password", который также находится в моем зашифрованном в хранилище файле.
Моя текущая структура playbook:
root
--> ansible.cfg
--> hosts
--> main.yml (main playbook)
--> group_vars
--> all
--> main.yml (where unencrypted "user" and "password" declared)
--> vault.yml (encrypted, has values for "vault_user" and "vault_password")
Фактическая часть моей пьесы, в которой создается / изменяется учетная запись:
- name: create_admin_account
user:
name={{ user }}
shell=/bin/bash
password={{ password }}
groups=sudo
append=yes
Определения переменных из /group_vars/all/main.yml
user: "{{ vault_user }}"
password: "{{ vault_password }}"
Затем в зашифрованном хранилище файле /group_vars/all/vault.yml (без предоставления фактической информации об учетной записи):
vault_user: 'xxxx'
vault_password: 'yyyy'
Пароль шифрования хранится в отдельном файле, и я указываю Ansible на этот файл через автоматизацию jenkins / Github (вместо определения файла паролей хранилища в ansible.cfg).
ЭТА ПРОБЛЕМА:
Когда я запускаю эту книгу, она успешно завершается, фактически читает мой файл хранилища и создает учетную запись пользователя «xxxx». Однако похоже, что он не устанавливает для пароля учетной записи значения, которые я определил, поскольку я не могу впоследствии войти в систему, используя эти учетные данные. Я проверил, что учетная запись создана правильно и впоследствии присутствует в группе sudoers.
Если ansible может читать сохраненную в хранилище переменную «user», почему бы ему не читать переменную «password» так же?
Я даже попытался запустить его с незашифрованным файлом хранилища и в виде обычного текста - ansible ВСЕ ЕЩЕ не читает мою переменную "пароль" правильно.
Кто-нибудь знает о взломе или способе узнать, какое текстовое значение Ansible вставляет в эту переменную при запуске (это может быть глупый вопрос, поскольку это будет огромным риском для безопасности!)?