ansible
Секретное шифрование
Поиск…
замечания
Ansible предлагает Vault (чтобы не ошибиться с HashiCorp Vault !) Для обработки конфиденциального шифрования данных. Сейф в первую очередь предназначен для шифрования любых структурированных данных, таких как переменные, задачи, обработчики.
Шифрование конфиденциальных структурированных данных
Сначала создайте файл ключа, например, vault_pass_file
, который идеально содержит длинную последовательность случайных символов. В системах linux вы можете использовать pwgen
для создания файла случайного пароля:
pwgen 256 1 > vault_pass_file
Затем используйте этот файл для шифрования конфиденциальных данных, например groups_vars/group.yml
:
ANSIBLE_VAULT_PASSWORD_FILE=vault_pass_file ansible-vault encrypt group_vars/group.yml
С этого vault_pass_file
для запуска учебника вам нужен vault_pass_file
:
ANSIBLE_VAULT_PASSWORD_FILE=vault_pass_file ansible-playbook -i inventories/nodes my-playbook.yml
Обратите внимание: вы также можете использовать --vault-password-file vault_pass_file
вместо установки переменной среды ANSIBLE_VAULT_PASSWORD_FILE
.
Для того , чтобы изменить или расшифровать секрет на диске , вы можете использовать ansible-vault edit
и ansible-vault decrypt
соответственно.
Использование поисковых каналов для дешифрования неструктурированных данных, хранящихся в хранилищах
С помощью Vault вы также можете шифровать неструктурированные данные, такие как файлы секретных ключей, и все еще иметь возможность расшифровывать их в своей игре с помощью модуля lookup
.
---
- name: Copy private key to destination
copy:
dest=/home/user/.ssh/id_rsa
mode=0600
content=lookup('pipe', 'ANSIBLE_VAULT_PASSWORD_FILE=vault_pass_file ansible-vault view keys/private_key.enc')
Использование local_action для дешифрования зашифрованных зашифрованных шаблонов
Вы можете запустить игру, которая полагается на зашифрованные шаблонами шаблоны, используя модуль local_action
.
---
- name: Decrypt template
local_action: "shell {{ view_encrypted_file_cmd }} {{ role_path }}/templates/template.enc > {{ role_path }}/templates/template"
changed_when: False
- name: Deploy template
template:
src=templates/template
dest=/home/user/file
- name: Remove decrypted template
local_action: "file path={{ role_path }}/templates/template state=absent"
changed_when: False
Обратите внимание, что changed_when: False
. Это важно, если вы запускаете тесты idempotence с вашими незаменимыми ролями, иначе каждый раз, когда вы запускаете playbook, выдается сообщение об изменении. В group_vars/all.yml
вы можете установить глобальную команду decrypt для повторного использования, например, как view_encrypted_file_cmd
.
group_vars / all.yml
---
view_encrypted_file_cmd: "ansible-vault --vault-password-file {{ lookup('env', 'ANSIBLE_VAULT_PASSWORD_FILE') }} view"
Теперь при запуске воспроизведения вам необходимо установить ANSIBLE_VAULT_PASSWORD_FILE
среды ANSIBLE_VAULT_PASSWORD_FILE
чтобы указать на ваш файл паролей хранилища (в идеале с абсолютным путем).