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ą).



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow