Утилита ansible-vault#

Описание#

ansible-vault - утилита шифрования/дешифрования любых структурированных файлов данных Ansible Core. Это могут быть переменные group_vars/ или host_vars/ для inventory, переменные, загружаемые с помощью include_vars или vars_files, или файлы переменных, передаваемые в командной строке ansible-playbook с помощью -e @file.yml или -e @file.json. Переменные роли и значения по умолчанию также включены.

Поскольку задачи, обработчики и другие объекты Ansible Core являются данными, они также могут быть зашифрованы с помощью ansible-vault.

Синтаксис утилиты:

ansible-vault <options> <action>

Где:

  • <options> - опции;

  • <action> - действие.

Настройка утилиты производится с помощью конфигурационного файла /etc/ansible/ansible.cfg, используемого при наличии, и файла конфигурации пользователя ~/.ansible.cfg, переопределяющего конфигурацию по умолчанию, если она присутствует, описанных в разделе «Конфигурационные файлы ansible.cfg».

Опции#

Опции утилиты представлены в таблице ниже.

Опции ansible-vault#

Опция

Описание

--version

Показать номер версии утилиты, расположение конфигурационного файла, настроенный путь поиска модулей, расположение модуля, расположение исполняемого файла и выйти

-h, --help

Показать справочное сообщение и выйти

-v, --verbose

Вывести больше отладочных сообщений. Добавление нескольких -v увеличивает уровень подробности, встроенные плагины в настоящее время оценивают до -vvvvvv. Разумный уровень для начала - -vvv, отладка соединения может потребовать -vvvv. Этот аргумент может быть указан несколько раз

Действия#

Действия утилиты представлены в таблице ниже.

Действия ansible-vault#

Действие

Опции действия

create - создать и открыть файл в редакторе, который будет зашифрован с использованием предоставленного секрета хранилища при закрытии

--encrypt-vault-id <encrypt_vault_id> - указать идентификатор хранилища, используемый для шифрования (обязателен, если предоставлено более одного идентификатора хранилища);
--skip-tty-check - позволить открыть редактор, когда нет подключенного TTY;
--vault-id - указать идентификатор хранилища для использования. Этот аргумент может быть указан несколько раз;
--vault-password-file, --vault-pass-file - указать файл пароля хранилища;
-J, --ask-vault-password, --ask-vault-pass - запросить пароль хранилища

decrypt - расшифровать предоставленный файл с использованием указанного секрета хранилища

--output <output_file> - указать имя выходного файла для шифрования или расшифровки; используйте - для стандартного вывода;
--vault-id - указать идентификатор хранилища для использования. Этот аргумент может быть указан несколько раз;
--vault-password-file, --vault-pass-file - указать файл пароля хранилища;
-J, --ask-vault-password, --ask-vault-pass - запросить пароль хранилища

edit - открыть и расшифровать существующий зашифрованный файл в редакторе, который будет зашифрован снова при закрытии

--encrypt-vault-id <encrypt_vault_id> - указать идентификатор хранилища, используемый для шифрования (обязателен, если предоставлено более одного идентификатора хранилища);
--vault-id - указать идентификатор хранилища для использования. Этот аргумент может быть указан несколько раз;
--vault-password-file, --vault-pass-file - указать файл пароля хранилища;
-J, --ask-vault-password, --ask-vault-pass - запросить пароль хранилища

view - открыть, расшифровать и просмотреть существующий зашифрованный файл с использованием постраничного просмотра и предоставленного секрета хранилища

--vault-id - указать идентификатор хранилища для использования. Этот аргумент может быть указан несколько раз;
--vault-password-file, --vault-pass-file - указать файл пароля хранилища;
-J, --ask-vault-password, --ask-vault-pass - запросить пароль хранилища

encrypt - зашифровать файл с использованием предоставленного секрета хранилища

--encrypt-vault-id <encrypt_vault_id> - указать идентификатор хранилища, используемый для шифрования (обязателен, если предоставлено более одного идентификатора хранилища);
--output <output_file> - указать имя выходного файла для шифрования или расшифровки; используйте - для вывода в stdout;
--vault-id - указать идентификатор хранилища для использования. Этот аргумент может быть указан несколько раз;
--vault-password-file, --vault-pass-file - указать файл пароля хранилища;
-J, --ask-vault-password, --ask-vault-pass - запросить пароль хранилища

encrypt_string - зашифровать строку с использованием предоставленного секрета хранилища

--encrypt-vault-id <encrypt_vault_id> - указать идентификатор хранилища, используемого для шифрования (обязателен, если предоставлено более одного идентификатора хранилища);
--output <output_file> - указать имя выходного файла для шифрования или расшифровки; используйте - для вывода в stdout;
--show-input - не скрывать ввод при запросе строки для шифрования;
--stdin-name <encrypt_string_stdin_name> - указать имя переменной для stdin;
--vault-id - указать идентификатор хранилища для использования. Этот аргумент может быть указан несколько раз;
--vault-password-file, --vault-pass-file - указать файл пароля хранилища;
-j, --ask-vault-password, --ask-vault-pass - запросить пароль хранилища;
-n, --name - указать имя переменной. Этот аргумент может быть указан несколько раз;
-p, --prompt - запросить строку для шифрования

rekey - зашифровать файл с новым секретом, требуется предыдущий секрет

--encrypt-vault-id <encrypt_vault_id> - указать идентификатор хранилища, используемого для шифрования (обязателен, если предоставлено более одного идентификатора хранилища);
--new-vault-id <new_vault_id> - указать новый идентификатор хранилища для повторного шифрования;
--new-vault-password-file <new_vault_password_file> - указать новый файл пароля хранилища для повторного шифрования;
--vault-id - указать идентификатор хранилища для использования. Этот аргумент может быть указан несколько раз;
--vault-password-file, --vault-pass-file - указать файл пароля хранилища;
-j, --ask-vault-password, --ask-vault-pass - запросить пароль хранилища

Переменные окружения#

Переменная окружения, влияющая на работу утилиты - ANSIBLE_CONFIG - переопределить конфигурационный файл по умолчанию.

Другие варианты доступны в качестве параметров ansible.cfg (подробнее - в разделе «Конфигурационные файлы ansible.cfg»).

Примеры использования#

  • Создайте зашифрованный файл secrets.yml:

    ansible-vault create secrets.yml
    

    В результате выполнения данной команды откроется текстовый редактор (например, nano, подробнее о нем - в разделе «Утилита nano»). Введите необходимые конфиденциальные данные, которые необходимо зашифровать, сохраните файл и выйдите из редактора. Утилита зашифрует содержимое файла с использованием пароля, заданного при первом ее использовании.

  • Прочитайте или измените ранее зашифрованный файл secrets.yml:

    ansible-vault edit secrets.yml
    

    Команда запросит пароль для расшифровки файла и откроет его в текстовом редакторе.

Дополнительная информация#

Дополнительную информацию можно получить, выполнив команду:

ansible-vault --help