81 lines
3.5 KiB
Markdown
81 lines
3.5 KiB
Markdown
# Alcuni esempi pratici sull'utilizzo di Ansible Vault
|
|
|
|
Ansible-vault è molto utile per criptare files con informazioni che devono rimanere segrete, come chiavi, password o informazioni sensibili
|
|
|
|
1) Come primo esempio, prendiamo un banale file .txt e lo criptiamo con ansible-vault (incluso in ansible-core):
|
|
- verifichiamo che il file sia "in chiaro" con il seguente comando:
|
|
```
|
|
cat 1_pippo.txt
|
|
```
|
|
una volta verificato che il file è visualizzabile in chiaro, lo criptiamo (viene chiesto di definire una password):
|
|
```
|
|
ansible-vault encrypt 1_pippo.txt
|
|
```
|
|
a questo punto verificare che il file non sia più visibile "in chiaro":
|
|
```
|
|
cat 1_pippo.txt
|
|
```
|
|
1.1) partendo dal punto precedente, dato un vault creato con ansible-vault, lo visualizziamo (occorre la password con il quale è protetto):
|
|
- per visualizzare il contenuto di un vault:
|
|
```
|
|
ansible-vault view 1_pippo.txt
|
|
```
|
|
1.2) partendo sempre dal vault creato al punto 1), possiamo editare il contenuto del vault (occorre la password con il quale è protetto):
|
|
- per modificare il contenuto di un vault:
|
|
```
|
|
ansible-vault edit 1_pippo.txt
|
|
```
|
|
1.3) partendo sempre dal vault creato al punto 1), possiamo modificare la password con cui è protetto, mantenendoo il segreto (occorre la password con il quale è protetto):
|
|
```
|
|
ansible-vault rekey 1_pippo.txt
|
|
```
|
|
1.4) partendo sempre dal vault creato al punto 1), possiamo decriptare il file facendolo tornare "in chiaro" (occorre la password con il quale è protetto):
|
|
- per decriptare il vault:
|
|
```
|
|
ansible-vault decrypt 1_pippo.txt
|
|
```
|
|
2) Come secondo esempio criptiamo un file utilizzando la password per criptare/decriptare contenuta in un file:
|
|
- generiamo il file con la password:
|
|
```
|
|
pwgen -sB 12 1 > 2_password
|
|
```
|
|
dopo aver generato il file con la password, procediamo a criptare il file 1_pippo.txt con il seguente comando:
|
|
```
|
|
ansible-vault encrypt 1_pippo.txt --vault-pass-file 2_password
|
|
```
|
|
2.1) le stesse operazioni di visualizzazione e/o di modifica del vault si possono fare utilizzando il file in cui è contenuta la password:
|
|
- visualizzo il contenuto:
|
|
```
|
|
ansible-vault view 1_pippo.txt --vault-pass-file 2_password
|
|
```
|
|
- edito il contenuto:
|
|
```
|
|
ansible-vault edit 1_pippo.txt --vault-pass-file 2_password
|
|
```
|
|
- decripto il contenuto:
|
|
```
|
|
ansible-vault decrypt 1_pippo.txt --vault-pass-file 2_password
|
|
```
|
|
3) nel caso in cui abbiamo più file protetti con vault, può essere comodo impiegare il vault-id, in questo esempio proviamo a criptare un file impiegando anche il vault id:
|
|
- comando per criptare il file con vault id (viene chiesto di definire una password):
|
|
```
|
|
ansible-vault encrypt --vault-id segreti@prompt 3_varsfile.yaml
|
|
```
|
|
- comando per criptare il file con vault id e file contenente la password:
|
|
```
|
|
ansible-vault encrypt --vault-id segreti@2_password 3_varsfile.yaml
|
|
```
|
|
3.1) in questo esempio, partendo dal file 3_varsfile.yaml criptato contenente una variabile, lanciamo il playbook 3_playbook.yaml che richiama la variabile nel file criptato:
|
|
- per lanciare ansible utilizzando il vault specifico:
|
|
```
|
|
ansible-playbook 3_playbook.yaml --vault-id segreti@2_password
|
|
```
|
|
- un altro modo per ottenere lo stesso risultato e' con il seguente comando:
|
|
```
|
|
ansible-playbook 3_playbook.yaml --vault-pass-file 2_password
|
|
```
|
|
4) nel caso in cui vogliamo criptare il valore di una singola variabile, possiamo utilizzare il seguente comando ansible-vault encrypt_string:
|
|
- se per esempio vogliamo criptare la variabile db_pwd=changeit il comando da utilizzare sarà il seguente
|
|
```
|
|
ansible-vault encrypt_string changeit --name db_pwd
|
|
```
|