Не найден пароль для хранилища в group_vars
Я пытаюсь использовать ansible-vault для защиты одного пароля для входа в Windows. Я не хочу размещать пароль в виде обычного текста в моем файле windows.yml (см. Ниже), и поэтому я пытаюсь использовать ansible-vault
чтобы защитить / зашифровать этот пароль.
У меня есть эта структура каталогов:
myansiblehome
- windows_manage
- group_vars
- windows.yml
- vault
- hosts
- win_playbook.yml
Мой вопрос о файле vault
, Я пытаюсь разместить пароль для входа в Windows здесь как зашифрованную переменную в соответствии с этим руководством. Имя переменной ansible_password
и идея в том, что у меня должен быть хеш в vault
файл, а не фактический пароль в тексте.
мой windows.yml
Файл выглядит следующим образом (следуя инструкциям здесь):
ansible_user: administrator
ansible_password: "{{ vault_ansible_password }}"
ansible_connection: winrm
ansible_winrm_server_cert_validation: ignore
Теперь, чтобы создать vault
файл, вот мои шаги:
cd windows_manage
ansible-vault create group_vars/vault
Тогда вот все содержимое, которое я помещаю в vault
файл:
---
vault_ansible_password: mypassword
Когда я запускаю этот файл с ansible-playbook -i ./hosts win_playbook.yml --ask-vault-pass
Я получаю эту ошибку (проблема A):
The field 'password' has an invalid value, which includes an
undefined variable. The error was: 'vault_ansible_password' is
undefined\nexception type: <...>\nexception: 'vault_ansible_password' is
undefined.
Итак, я попытался сгенерировать хеш вместо использования текста. Я сделал это:
mkpasswd --method=SHA-512
# copy the resulting hash to the clipboard
ansible-vault create group_vars/vault
Я заменил текст моего пароля этим хешем. Я вставил хеш в vi
редактор и сохранил vault
файл. Я снова запустил книгу с ansible-playbook -i ./hosts win_playbook.yml --ask-vault-pass
, На этот раз я получил другую ошибку (проблема B):
fatal: [...]: UNREACHABLE! => ..."ssl: the specified
credentials were rejected by the server", "unreachable": true}
Чтобы преодолеть это, я должен сделать 2 вещи:
- Для решения проблемы А.: в
win_playbook.yml
Мне нужно добавитьvars_files: group_vars\vault
, немного похоже на этот пост Stackru. - Чтобы решить проблему B.: Я должен заменить хэш в
vault
с реальным паролем в тексте (мой пароль).
Вопросы:
Относительно A: В уроках, с которыми я сталкивался по поводу хранилища данных, я не вижу конкретной причины, по которой
vars_file: group_vars\vars
должен присутствовать в основном файле playbook (см. ссылки 1-4 ниже). То есть об этом нигде не упоминается. Я думал, что Ansible будет автоматически определять переменные вgroup_vars
каталог??? Есть ли причина, по которой эта строка обязательна?- https://serversforhackers.com/c/ansible-using-vault
- https://www.digitalocean.com/community/tutorials/how-to-use-vault-to-protect-sensitive-ansible-data-on-ubuntu-16-04
- эти ребята используют
group_vars/vars
(незашифрованный переменный файл похож на мойgroup_vars/vars
) а такжеgroup_vars/vault
(зашифрованный переменный файл похож на мойgroup_vars/vault
) но они используют роль, а я не использую роль Ansible
- эти ребята используют
- https://knpuniversity.com/screencast/ansible/variable-vault
- https://opensource.com/article/16/12/devops-security-ansible-vault
Относительно B: Похоже, что другие пользователи (смотрите здесь, используют хеши в качестве переменных). На самом деле, даже Ansible документы предлагают использовать
mkpasswd
генерировать пароли. Может быть, я что-то неправильно понимаю. Разве мы не должны использоватьmkpasswd --method=SHA-512
хешировать пароль, а затем поместить хэш в качестве значения переменной? Разве невозможно использовать хеш в качестве значения в ключе: значение вvault
файл?
1 ответ
group_vars
полагаться на имя файла / каталога - оно должно соответствовать конкретному имени группы.
В твоем случае windows.yml
применяется к группе с именем windows
, но vault
был бы применен к группе с именем vault
,
Чтобы преодолеть вашу проблему, создайте каталог с именем windows
и поместите свои файлы туда (каждый файл под windows
каталог будет применен к хостам в windows
группа в алфавитном порядке):
myansiblehome
\ windows_manage
\ group_vars
\ windows
\ windows.yml
- vault