====== Использование Ansible-vault в Ansible-playbook и сохранение в Git ====== К примеру, у нас есть проект, расположенный в Gitlab. Для того, что бы не хранить секреты в открытом виде будем использовать Ansible-vault Клонируем наш проект $ git clone ssh://git@gitlab.itdraft.ru/ansible/test-project.git Переходим в проект $ cd test-project Допустим, в проекте пароли ранее хранились в открытом виде. Устраняем это недоразумение, удаляем файл $ rm user_passwords.yml Создаем шифрованный файл используя Ansible-vault, заполним его необходимыми данными $ ansible-vault create user_passwords.yml New Vault password: superpass Confirm New Vault password: superpass В данном случае структура будет следующая --- user_passwords: m.makarov: MySuperPassw0rd Если посмотрим содержимое файла стандартными средствами, мы увидим что-то вроде $ cat user_passwords.yml $ANSIBLE_VAULT;1.1;AES256 62666362383931393966363735623861303739383936663266613864643930306237656163356263 3634366531653030323663353733336363383337643733630a346165653135366337646432353865 35636363613464303264746462313165383963653834343036303962363063363163376538366234 6334373435366434310a373663313638383961313563373838336433636661386434313963663132 33396562326431303836663938353935323161656435303632353263393737336536316563366436 37656266346166303261343138353163383811353930613134613739303033353633663963663634 366261376134616137306438363632323865 В дальнейшем, чтобы посмотреть или изменить данные в файле, необходимо использовать команды ''ansible-vault view'' и ''ansible-vault edit'' $ ansible-vault view user_passwords.yml Vault password: superpass $ ansible-vault edit user_passwords.yml Vault password: superpass Что бы сохранить изменения в репозитории, выполняем ''git commit'' и ''git push'' $ git add . $ git commit -m "add ansible-vault" $ git push origin main Запускаем ''ansible-playbook'' $ ansible-playbook -i hosts -l srv playbook.yml --ask-vault-pass Vault password: suprepass В данном примере я добавил параметр ''–ask-vault-pass''. В результате, при выполнении ''ansible-playbook'' запросился пароль. Ключ так же можно сохранить в отдельный файл (''$ echo "MySuperPass" > ~/.ansible_pass.txt'') и использовать параметр ''–vault-password-file="~/.ansible_pass.txt"'' **Полезные команды для работы с Ansible-vault:** * ''$ ansible-vault encrypt user_passwords.yml'' - зашифровать имеющийся файл * ''$ ansible-vault decrypt user_passwords.yml'' - расшифровать файл, вернуть в plaintext * ''$ ansible-vault rekey user_passwords.yml'' - поменять пароль шифрования Зашифровать переменную командой ''ansible-vault encrypt_string'' $ ansible-vault encrypt_string "текст, который мы шифруем" --name "data_string" --ask-vault-pass Vault password: suprepass data_string: !vault | $ ANSIBLE_VAULT;1.1;AES256 36653162656434373362396464353061343337343866323436366138636266666165636163623337 3339343833383064303036346661616235396563356362630a363430313566323537363964663636 32303931333561633632323265346136323139616536343466663736666138333638306133653935 3066643730653831300a663735333639343064666636336139336536353734343963313032373338 35643639643136623163346662623763633763366462396433323133306532663038 Encryption successful И далее эту переменную можно использовать ''ansible-playbook'' --- data_string: !vault | $ANSIBLE_VAULT;1.1;AES256 36653162656434373362396464353061343337343866323436366138636266666165636163623337 3339343833383064303036346661616235396563356362630a363430313566323537363964663636 32303931333561633632323265346136323139616536343466663736666138333638306133653935 3066643730653831300a663735333639343064666636336139336536353734343963313032373338 35643639643136623163346662623763633763366462396433323133306532663038