Не найден пароль для хранилища в 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 вещи:

  1. Для решения проблемы А.: в win_playbook.ymlМне нужно добавить vars_files: group_vars\vault, немного похоже на этот пост Stackru.
  2. Чтобы решить проблему B.: Я должен заменить хэш в vault с реальным паролем в тексте (мой пароль).

Вопросы:

  1. Относительно A: В уроках, с которыми я сталкивался по поводу хранилища данных, я не вижу конкретной причины, по которой vars_file: group_vars\vars должен присутствовать в основном файле playbook (см. ссылки 1-4 ниже). То есть об этом нигде не упоминается. Я думал, что Ansible будет автоматически определять переменные в group_vars каталог??? Есть ли причина, по которой эта строка обязательна?

    1. https://serversforhackers.com/c/ansible-using-vault
    2. 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
    3. https://knpuniversity.com/screencast/ansible/variable-vault
    4. https://opensource.com/article/16/12/devops-security-ansible-vault
  2. Относительно 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
Другие вопросы по тегам