ansible
Hemlig kryptering
Sök…
Anmärkningar
Ansible erbjuder Vault (får inte misstas med HashiCorp Vault !) För att hantera känslig datakryptering. Vault riktar sig främst mot att kryptera strukturerade data som variabler, uppgifter, hanterare.
Kryptera känsliga strukturerade data
Skapa först en nyckelfil, t.ex. vault_pass_file
, som helst innehåller en lång sekvens av slumpmässiga tecken. I linux-system kan du använda pwgen
att skapa en slumpmässig lösenordsfil:
pwgen 256 1 > vault_pass_file
Använd sedan den här filen för att kryptera känslig data, t.ex. groups_vars/group.yml
:
ANSIBLE_VAULT_PASSWORD_FILE=vault_pass_file ansible-vault encrypt group_vars/group.yml
Från och med nu, för att köra en spellista behöver du vault_pass_file
:
ANSIBLE_VAULT_PASSWORD_FILE=vault_pass_file ansible-playbook -i inventories/nodes my-playbook.yml
Observera att du också kan använda flaggan --vault-password-file vault_pass_file
istället för att ställa in ANSIBLE_VAULT_PASSWORD_FILE
miljövariabeln.
För att redigera eller dekryptera hemligheten på disken kan du använda ansible-vault edit
respektive- ansible-vault decrypt
.
Använda uppslagningsrör för att dekryptera icke-strukturerad valvkrypterad data
Med Vault kan du också kryptera icke-strukturerad data, till exempel privata nyckelfiler och fortfarande kunna dekryptera dem i ditt spel med 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')
Använda local_action för att dekryptera valvkrypterade mallar
Du kan köra ett spel som förlitar sig på valvkrypterade mallar med modulen 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
Observera den changed_when: False
. Detta är viktigt om du kör idempotensprov med dina ansvarsfulla roller - annars visas varje förändring varje gång du kör spellistan. I group_vars/all.yml
du ställa in ett globalt dekrypterande kommando för återanvändning, t.ex. som view_encrypted_file_cmd
.
group_vars / all.yml
---
view_encrypted_file_cmd: "ansible-vault --vault-password-file {{ lookup('env', 'ANSIBLE_VAULT_PASSWORD_FILE') }} view"
När du kör ett spel måste du nu ställa in ANSIBLE_VAULT_PASSWORD_FILE
miljövariabeln så att den pekar på ditt valvlösenordsfil (helst med en absolut sökväg).