Оглавление:
Карта сайта:
Оглавление:
Карта сайта:
Для существующих файлов используйте команду ansible-vault encrypt, чтобы установить пароль.
$ echo "SecurePassword" > passwords.txt $ ansible-vault encrypt passwords.txt New Vault password: Confirm New Vault password: Encryption successful
Это заменит незашифрованный файл зашифрованным.
Для редактирования зашифрованного файла используйте команду ansible-vault edit.
$ ansible-vault edit passwords.yml
Это попросит вас ввести пароль для файла.
Vault password:
Вы всегда можете обновить пароль шифрования с помощью команды ansible-vault rekey.
$ ansible-vault rekey create_users.yml Vault password: New Vault password: Confirm New Vault password: Rekey successful
Введите старый пароль и новый пароль для установки при появлении запроса. После обновления файл будет доступен с использованием нового пароля.
Вы можете просматривать содержимое зашифрованного файла, не открывая окно редактора.
Для этого вы будете использовать команду ansible-vault view.
$ ansible-vault view create_users.yml
Перед отображением содержимого вам необходимо ввести пароль файла.
Vault password: Secret information
Если вам больше не нужно шифрование, вы можете расшифровать зашифрованный в хранилище файл с помощью команды ansible-vault decrypt.
$ ansible-vault decrypt myfile.yml
Укажите пароль для шифрования файла.
Vault password: Decryption successful
Вы сможете увидеть фактическое содержимое файла после расшифровки.
После того, как вы зашифруете свои конфиденциальные данные, вы, очевидно, захотите запустить Ansible playbook, который каким-то образом ссылается на зашифрованные данные.
Команды ansible и ansible-playbook могут расшифровывать файлы, защищенные хранилищем, если указан правильный пароль.
$ ansible-playbook --ask-vault-pass <vault-encrypted-playbook-file>.yaml
Для Ansible версии моложе или 2,4, вы можете использовать флаг –vault-id @prompt.
Смотрите пример ниже.
$ ansible-playbook --ask-vault-pass -i hosts osp-pre.yml Vault password: PLAY [Run presetup on OSP nodes] ****************************************************************************************************************** TASK [Gathering Facts] **************************************************************************************************************************** ...................................................................................
или
$ ansible-playbook -i hosts osp-pre.yml --vault-id @prompt Vault password (default):
Если вы хотите избежать интерактивного запроса пароля во время выполнения playbook, рассмотрите возможность использования Ansible Vault с файлом паролей.
Создать файл паролей.
$ echo 'MyStrongVaulPassword' > .ansible_vault_pass
Для парней, использующих системы контроля версий, такие как git, рассмотрите возможность добавления файла .ansible_vault_pass в список игнорируемых файлов.
$ echo '.ansible_vault_pass' >> .gitignore
Теперь используйте файл пароля при запуске команды ansible или ansible-playbook.
$ ansible --vault-password-file=.ansible_vault_pass ... $ ansible-playbook --vault-password-file=.ansible_vault_pass ....
Пример:
$ ansible-playbook --vault-password-file=.ansible_vault_pass -i hosts osp-pre.yml PLAY [Run presetup on OSP nodes] ****************************************************************************************************************** TASK [Gathering Facts] ****************************************************************************************************************************
Как показано выше, нет запроса на ввод файла пароля.
Установите переменную среды
ANSIBLE_VAULT_PASSWORD_FILE
Если вам не нравится указывать флаг пароля или использовать интерактивный запрос пароля, вы можете настроить Ansible на автоматическое чтение файла пароля.
Это достигается путем установки переменной среды ANSIBLE_VAULT_PASSWORD_FILE с путем к файлу пароля:
export ANSIBLE_VAULT_PASSWORD_FILE=./.ansible_vault_pass
Чтобы сохранить конфигурацию, установите ее в локальном файле ansible.cfg.
$ vim ansible.cfg [defaults] ........ vault_password_file = ./.ansible_vault_pass
Ansible будет использовать пароль конфигурации для всех операций шифрования и создания.
В идеальном мире автоматизации с совместной работой вам нужно только шифровать конфиденциальные данные, такие как пароли базы данных, ключи API, учетные данные пользователя и т. д.
Создать файл зашифрованных переменных.
$ vim vars/vault.yml vault_db_pass: MyStrongPassword $ ansible-vault encrypt vars/vault.yml New Vault password: Confirm New Vault password: Encryption successful Подтвердите, что это все зашифровано. $ cat vars/vault.yml $ANSIBLE_VAULT;1.1;AES256 62383961353832333263356333356465633635633731393039303834623832626162613235343930 6238663730366237616639326233393361626639616136300a393665326434633438613436316630 61656261616132366436646434393833613064326531346631666630616535663535353038666135 3732333338313739340a656434633336666662393161393663303662616264643364313630383163 30643763323038396161316339663037353632626462626233363836346461656238393035623533 6531353930326133656165326130303661303965316464306330
Затем мы определим другие незашифрованные переменные и ссылку, зашифрованные в переменных хранилища.
$ vim vars/plain.yml db_user: computingforgeeks db_port: 3306 db_pass: "{{ vault_db_pass }}"
Обратите внимание, что мы использовали шаблоны Jinja2 для ссылки на переменную, определенную в защищенном от хранилища файле.
Создать файл Playbook.
$ vim vault.yml
--- - name: Create users hosts: localhost tasks: - name: Include vars include_vars: dir: vars - name: Generate dummy variables data blockinfile: path: /tmp/vault block: Database user: "{{ db_user }}" Database Port: "{{ db_port }}" Database Password: "{{ db_pass }}"
Запустим плейбук:
$ ansible-playbook --connection=local vault.yml --ask-vault-pass Vault password: PLAY [Create users] ******************************************************************************************************************************* TASK [Gathering Facts] **************************************************************************************************************************** ok: [localhost] TASK [Include vars] ******************************************************************************************************************************* ok: [localhost] TASK [Generate dummy variables data] ************************************************************************************************************** changed: [localhost] PLAY RECAP **************************************************************************************************************************************** localhost : ok=3 changed=1 unreachable=0 fa
Давайте проверим содержимое созданного файла.
$ cat /tmp/vault # BEGIN ANSIBLE MANAGED BLOCK Database user: "computingforgeeks" Database Port: "3306" Database Password: "MyStrongPassword" # END ANSIBLE MANAGED BLOCK