ansible
Tajne szyfrowanie
Szukaj…
Uwagi
Ansible oferuje Vault (nie mylić z HashiCorp Vault !) Obsługę szyfrowania poufnych danych. Vault przede wszystkim ma na celu szyfrowanie wszelkich danych strukturalnych, takich jak zmienne, zadania, programy obsługi.
Szyfrowanie poufnych danych strukturalnych
Najpierw utwórz plik klucza, np. vault_pass_file
, który idealnie zawiera długą sekwencję losowych znaków. W systemach Linux możesz użyć pwgen
do utworzenia losowego pliku hasła:
pwgen 256 1 > vault_pass_file
Następnie użyj tego pliku do szyfrowania poufnych danych, np. groups_vars/group.yml
:
ANSIBLE_VAULT_PASSWORD_FILE=vault_pass_file ansible-vault encrypt group_vars/group.yml
Od teraz, aby uruchomić playbook, potrzebujesz vault_pass_file
:
ANSIBLE_VAULT_PASSWORD_FILE=vault_pass_file ansible-playbook -i inventories/nodes my-playbook.yml
Uwaga: zamiast ustawiać ANSIBLE_VAULT_PASSWORD_FILE
środowiskową ANSIBLE_VAULT_PASSWORD_FILE
można również użyć flagi --vault-password-file vault_pass_file
.
Aby edytować lub odszyfrować sekret na dysku, możesz użyć odpowiednio ansible-vault edit
ansible-vault decrypt
i ansible-vault decrypt
.
Używanie potoków wyszukiwania do odszyfrowywania nieustrukturyzowanych danych zaszyfrowanych w repozytorium
Dzięki Vault możesz również szyfrować nieustrukturyzowane dane, takie jak pliki kluczy prywatnych, i nadal być w stanie odszyfrować je w grze dzięki modułowi 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')
Używanie lokalnych działań do odszyfrowywania szablonów zaszyfrowanych w przechowalni
Możesz uruchomić grę, która opiera się na szablonach zaszyfrowanych w repozytorium, korzystając z modułu 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
Zwróć uwagę na changed_when: False
. Jest to ważne w przypadku, gdy przeprowadzasz testy idempotencji ze swoimi rolami - w przeciwnym razie za każdym razem, gdy uruchomisz podręcznik, sygnalizowana jest zmiana. W group_vars/all.yml
można ustawić globalne polecenie deszyfrowania do ponownego użycia, np. Jako view_encrypted_file_cmd
.
group_vars / all.yml
---
view_encrypted_file_cmd: "ansible-vault --vault-password-file {{ lookup('env', 'ANSIBLE_VAULT_PASSWORD_FILE') }} view"
Teraz, podczas uruchamiania gry, musisz ustawić ANSIBLE_VAULT_PASSWORD_FILE
środowiskową ANSIBLE_VAULT_PASSWORD_FILE
aby wskazywała na plik hasła do przechowalni (najlepiej z bezwzględną ścieżką).