ansible
Geheime codering
Zoeken…
Opmerkingen
Ansible biedt Vault aan (niet te verwarren met HashiCorp Vault !) Om gevoelige gegevenscodering te verwerken. Vault richt zich primair op het coderen van gestructureerde gegevens zoals variabelen, taken, handlers.
Codering van gevoelige gestructureerde gegevens
Maak eerst een sleutelbestand, bijvoorbeeld vault_pass_file
, dat idealiter een lange reeks willekeurige tekens bevat. In Linux-systemen kunt u pwgen
gebruiken om een willekeurig wachtwoordbestand te maken:
pwgen 256 1 > vault_pass_file
Gebruik dit bestand vervolgens om gevoelige gegevens te coderen, bijv. groups_vars/group.yml
:
ANSIBLE_VAULT_PASSWORD_FILE=vault_pass_file ansible-vault encrypt group_vars/group.yml
Vanaf nu heb je het vault_pass_file
nodig om een playbook uit te vault_pass_file
:
ANSIBLE_VAULT_PASSWORD_FILE=vault_pass_file ansible-playbook -i inventories/nodes my-playbook.yml
Note, kunt u ook gebruik maken van de vlag --vault-password-file vault_pass_file
in plaats van het instellen van de ANSIBLE_VAULT_PASSWORD_FILE
variabele omgeving.
Om het geheim op schijf te bewerken of te ontcijferen, kunt u respectievelijk ansible-vault edit
en ansible-vault decrypt
ansible-vault edit
gebruiken.
Opzoekpijpen gebruiken om niet-gestructureerde, met kluis versleutelde gegevens te decoderen
Met Vault kunt u ook niet-gestructureerde gegevens, zoals privé-sleutelbestanden, coderen en ze nog steeds in uw spel met de lookup
kunnen decoderen.
---
- 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')
Het gebruik van lokale cialis om met kluis versleutelde sjablonen te decoderen
U kunt een spel uitvoeren dat is gebaseerd op kluis-gecodeerde sjablonen met behulp van de local_action
module.
---
- 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
Let op het changed_when: False
. Dit is belangrijk in het geval dat u idempotentetests uitvoert met uw onmogelijke rollen - anders wordt elke keer dat u het playbook uitvoert een verandering gesignaleerd. In group_vars/all.yml
kunt u een globaal decodeercommando instellen voor hergebruik, bijvoorbeeld als view_encrypted_file_cmd
.
group_vars / all.yml
---
view_encrypted_file_cmd: "ansible-vault --vault-password-file {{ lookup('env', 'ANSIBLE_VAULT_PASSWORD_FILE') }} view"
Wanneer u nu een spel uitvoert, moet u de omgevingsvariabele ANSIBLE_VAULT_PASSWORD_FILE
instellen dat deze naar uw ANSIBLE_VAULT_PASSWORD_FILE
(idealiter met een absoluut pad).