Тип шифрования для ansible_password при использовании его с WinRM - PullRequest
1 голос
/ 18 февраля 2020

до сих пор я разрешал незашифрованные строки в WinRM, поэтому я могу использовать обычное значение в качестве пароля в файле инвентаризации ansible. Но теперь я должен использовать его, не допуская незашифрованных паролей. Но каждый метод, который я пробовал, был неудачным

Я пробовал следующее:

  • Ansible Метод хранилища

ansible-vault edit foo.yml

или

ansible-vault encrypt_string --vault-password-file a_password_file 'foobar' --name 'the_secret'

, чтобы получить переменную для непосредственного вставки в инвентарь

  • Ansible Пользовательский модуль Метод шифрования пароля

ansible all -i localhost, -m debug -a "msg={{ 'mypassword' | password_hash('sha512', 'mysalt') }}"

  • Метод защищенной строки Powershell

$cred = get-credential "Administrator"

затем

$cred.Password | ConvertFrom-SecureString

  • Используйте приглашение Ansible напрямую

Так что мне не нужно установить ansible_password в инвентаре

ansible-playbook playbook.yml --vault-password-file ansible_vault_pass.txt -i inv.yml --ask-pass

Вот ошибка, которую я получаю каждый раз.

Error.gif

1 Ответ

0 голосов
/ 18 февраля 2020

Обычно я использую одиночные зашифрованные значения / переменные ; таким образом, используйте encrypt_string.

На терминале выполните следующее, чтобы получить зашифрованное значение для данного секрета: ansible-vault encrypt_string --vault-id "local@ansible_vault" 'Your_SuperSecret_Password' --name "key_to_assign_it_to". Это должно дать вам что-то вроде:

key_to_assign_it_to: !vault |
  $ANSIBLE_VAULT;1.2;AES256;local
  55643833366163333632303132346665333130663030393566383933616135373565326637623162
  3633366239326565383936613535643538323863356362640a323566396264653561626561363939
  37363638336335393030636139356164323966633239316537316564376166643036623633633736
  3663666337343162340a313936653062646330633664336564646261376539303830353033636166
  65313238393062313939383432313762353536653332303231643430633835206431

По умолчанию метка хранилища (local, development, et c.) - это просто подсказка. Ansible расшифрует хранилище с помощью предоставленного пароля.

Скопируйте и вставьте это значение в указанный файл c YAML, который вы хранили key_to_assign_it_to ранее. Тогда в вашей команде playbook вам понадобится что-то вроде этого:

$ ansible-playbook --inventory-file /path/to/your/inventory \
    --private-key ssh_private_key_file.pem \
    --user ansible \
    --vault-id "local@${ansible_vault}" \
    playbook.yml"

Единственное, что здесь осталось, это ansible_vault. Это просто файл (с именно этим именем), который содержит, в моем случае, один файл с (основным) паролем, который вы собираетесь использовать для шифрования своих секретов / паролей.

Я знаю вас в ваших примерах не используется какая-либо оболочка UN * X, но преобразование чего-либо там в Windows.

должно быть простым.
...