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



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow