Added ansible-vault info
This commit is contained in:
parent
61a1d86049
commit
a96e2f01b1
101
README.md
101
README.md
|
@ -4,7 +4,7 @@
|
||||||
* Doel van de demo: LXD + Ansible + Galera cluster
|
* Doel van de demo: LXD + Ansible + Galera cluster
|
||||||
* Installatie VM's voor de demo
|
* Installatie VM's voor de demo
|
||||||
* Netwerktopologie
|
* Netwerktopologie
|
||||||
* LXD clustering
|
* LXD clustering vs LXD remotes
|
||||||
* De Ansible container
|
* De Ansible container
|
||||||
* Ansible-vault voor opslag secrets
|
* Ansible-vault voor opslag secrets
|
||||||
* Dynamische inventory
|
* Dynamische inventory
|
||||||
|
@ -65,9 +65,39 @@ maar die kunnen zonder blikken of blozen naar de slachtbank.
|
||||||
|
|
||||||
# Installatie VM's voor de demo
|
# Installatie VM's voor de demo
|
||||||
* 2 VM's: sidn-demo-01, sidn-demo-02
|
* 2 VM's: sidn-demo-01, sidn-demo-02
|
||||||
* virtual machine met NAT netwerk: 192.168.56.0/24, gateway/DNS 192.168.56.1
|
* virtual machine met 2 KVM netwerken gekoppeld:
|
||||||
|
* NAT netwerk: 192.168.56.0/24, gateway/DNS 192.168.56.1
|
||||||
|
* Host-only netwerk: 10.0.0.0/24
|
||||||
* Ubuntu 18.04 LTS
|
* Ubuntu 18.04 LTS
|
||||||
|
|
||||||
|
#### Host-only netwerk
|
||||||
|
|
||||||
|
Het NAT netwerk is standaard beschikbaar, maar het host-only netwerk moest ik
|
||||||
|
nog met de hand aanmaken.
|
||||||
|
|
||||||
|
```text
|
||||||
|
# sudo apt-get install bridge-utils
|
||||||
|
# vi /etc/network/interfaces (onderstaande daaraan toegevoegd)
|
||||||
|
|
||||||
|
auto br-host
|
||||||
|
iface br-host inet static
|
||||||
|
address 10.0.0.1
|
||||||
|
netmask 255.255.255.0
|
||||||
|
pre-up brctl addbr br-host
|
||||||
|
post-down brctl delbr br-host
|
||||||
|
|
||||||
|
# echo '<network><name>host-only</name><bridge name="bg-host" /></network>' > /tmp/net.xml
|
||||||
|
# virsh net-define /tmp/net.xml
|
||||||
|
# virsh net-start host-only
|
||||||
|
# virsh net-autostart host-only
|
||||||
|
|
||||||
|
# virsh net-list --all (om te controleren of het er goed uitziet)
|
||||||
|
Name State Autostart Persistent
|
||||||
|
------------------------------------------------
|
||||||
|
nat active yes yes
|
||||||
|
host-only active yes yes
|
||||||
|
```
|
||||||
|
|
||||||
#### Upgrade na installatie
|
#### Upgrade na installatie
|
||||||
|
|
||||||
```text
|
```text
|
||||||
|
@ -349,7 +379,7 @@ steeds wel handmatig inrichten zoals hierboven, alleen dan met een loopback
|
||||||
bridge met een duidelijk naam als "br-local" of "br-private".
|
bridge met een duidelijk naam als "br-local" of "br-private".
|
||||||
|
|
||||||
|
|
||||||
#### Aanmaken LXD profile voor de demo
|
#### Gebruik van LXD profiles voor de netwerk device configuratie
|
||||||
|
|
||||||
Op basis van de gevolgde lxd init methode, is er al een default profiel aangemaakt
|
Op basis van de gevolgde lxd init methode, is er al een default profiel aangemaakt
|
||||||
voor LXD. Deze is heel erg basaal, omdat we geen netwerk bridge hebben geconfigureerd:
|
voor LXD. Deze is heel erg basaal, omdat we geen netwerk bridge hebben geconfigureerd:
|
||||||
|
@ -370,7 +400,8 @@ used_by: []
|
||||||
```
|
```
|
||||||
|
|
||||||
Het beheer van profielen regelen we primair vanuit Ansible, maar op dit punt
|
Het beheer van profielen regelen we primair vanuit Ansible, maar op dit punt
|
||||||
van de demo maak ik met de hand een profiel aan.
|
van de demo maak ik met de hand een profiel aan, om te laten zien wat
|
||||||
|
Ansible hier onder water doet.
|
||||||
|
|
||||||
```text
|
```text
|
||||||
sidn-demo-0X# lxc profile create demo
|
sidn-demo-0X# lxc profile create demo
|
||||||
|
@ -416,9 +447,8 @@ gepusht met de cloud-init configuratie. En zelfs de netwerkconfguratie slechts
|
||||||
deels, omdat demodeze met de cloud-init van Ubuntu 14.04 nog niet mogelijk was.
|
deels, omdat demodeze met de cloud-init van Ubuntu 14.04 nog niet mogelijk was.
|
||||||
|
|
||||||
|
|
||||||
|
# LXD clustering vs LXD remotes
|
||||||
# LXD clustering
|
Wij gebruiken __geen__ LXD clustering.
|
||||||
Of beter gezegd: __geen__ LXD clustering.
|
|
||||||
|
|
||||||
Een cluster zorgt er voornamelijk voor dat je een aantal LXD hosts aan elkaar
|
Een cluster zorgt er voornamelijk voor dat je een aantal LXD hosts aan elkaar
|
||||||
koppelt, die onderling gaan uitwisselen welke containers er op de hosts draaien.
|
koppelt, die onderling gaan uitwisselen welke containers er op de hosts draaien.
|
||||||
|
@ -659,14 +689,59 @@ jinja2_extensions = jinja2.ext.do
|
||||||
pipelining = True
|
pipelining = True
|
||||||
```
|
```
|
||||||
|
|
||||||
De vault_password_file wordt gebruikt als password file voor Ansible vault.
|
# Ansible vault voor opslag secrets
|
||||||
Met vault is het mogelijk om geheime informatie (normaliter: wachtwoorden)
|
|
||||||
op te slaan in gecrypte vorm. Het te gebruiken symmetrische wachtwoord is
|
De bovengenoemde `vault_password_file` wordt gebruikt als password file voor
|
||||||
opgeslagen in de password file. Bijvoorbeeld:
|
Ansible vault. Met vault is het mogelijk om geheime informatie (normaliter: wachtwoorden)
|
||||||
|
op te slaan in gecrypte vorm. Het te gebruiken symmetrische wachtwoord is opgeslagen in
|
||||||
|
de password file.
|
||||||
|
|
||||||
|
Bijvoorbeeld:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
ansible# echo "My very secret 1337 super passw0rd##" \
|
ansible# echo -n "My very secret 1337 super passw0rd##" > /root/.ansible-vault-password
|
||||||
> /root/.ansible-vault-password
|
|
||||||
ansible# chmod 600 /root/.ansible-vault-password
|
ansible# chmod 600 /root/.ansible-vault-password
|
||||||
```
|
```
|
||||||
|
Hierna is het mogelijk om met het `ansible-vault` commando bestanden of losse strings
|
||||||
|
te encrypten. Ansible herkent automatisch dit soort crypted informatie bij het lezen
|
||||||
|
van de recipe yaml bestanden en decrypt ze automatisch voor gebruik in een run.
|
||||||
|
|
||||||
|
Wij maken alleen gebruik van de losse string encryptie op de volgende manier:
|
||||||
|
|
||||||
|
```text
|
||||||
|
# ansible-vault encrypt_string 'SECRET!'
|
||||||
|
Reading plaintext input from stdin. (ctrl-d to end input)
|
||||||
|
!vault |
|
||||||
|
$ANSIBLE_VAULT;1.1;AES256
|
||||||
|
64663430316333633466353834343736333634666137653034323538316536376435616339313539
|
||||||
|
3536373866656238393031663665353364346530313933610a616233386234323363346266643262
|
||||||
|
37613963346134313461396130643939353037323835383132663864636266623736393361393636
|
||||||
|
3533613531353763610a303633323961366361333165393339343464336335653162663963393837
|
||||||
|
646
|
||||||
|
```
|
||||||
|
|
||||||
|
De complete string vanaf `!vault ...` kun je in een yaml value plakken, bijv:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
user:
|
||||||
|
username: john
|
||||||
|
password: !vault |
|
||||||
|
$ANSIBLE_VAULT;1.1;AES256
|
||||||
|
64663430316333633466353834343736333634666137653034323538316536376435616339313539
|
||||||
|
3536373866656238393031663665353364346530313933610a616233386234323363346266643262
|
||||||
|
37613963346134313461396130643939353037323835383132663864636266623736393361393636
|
||||||
|
3533613531353763610a303633323961366361333165393339343464336335653162663963393837
|
||||||
|
646
|
||||||
|
```
|
||||||
|
|
||||||
|
Om wachtwoorden te genereren voor onze systemen, gebruiken we pwgen op deze manier:
|
||||||
|
|
||||||
|
```text
|
||||||
|
# ansible-vault encrypt_string $(pwgen 32 -c -n -1)
|
||||||
|
```
|
||||||
|
|
||||||
|
Hiermee genereren we direct een crypted string en het plain text wachtwoord is
|
||||||
|
zelfs onbekend, omdat het nergens op het scherm verschijnt. Als je wilt weten
|
||||||
|
welk wachtwoord het is geworden, dan is dat uiteindelijk natuurlijk wel binnen
|
||||||
|
Ansible recipes opvraagbaar.
|
Loading…
Reference in New Issue