73 lines
2.5 KiB
Markdown
73 lines
2.5 KiB
Markdown
# Playbooks
|
|
|
|
Qui vengono riportati i playbook disponibili, descrizione e utilizzo.
|
|
**NB** Ci si aspetta che i playbook siano idempotenti. In caso contrario e' importante riportarlo nella documentazione corrente.
|
|
|
|
### Bootstrap
|
|
Implementa la configurazione di base di un nodo per poter essere gestito dagli altri playbook, in particolare :
|
|
- crea l'utente ansible
|
|
- registra le chiavi ssh degli utenti configurati
|
|
|
|
**Target Hosts : all**
|
|
|
|
|
|
#### Parametri
|
|
Il playbook si aspetta le seguenti variabili
|
|
```
|
|
ansible_authorized_keys:
|
|
- label : <MY LABEL>
|
|
key: <MY>
|
|
```
|
|
|
|
#### Chiamata
|
|
Per lanciare il playbook e' necessario specificare l'utente da utilizzare per connettersi ed esguire il playbook con l'opzione *-e*'.
|
|
L'opzione '*-K*' invece permette di chiedere la password dell'utente remoto
|
|
|
|
```
|
|
ansible-playbook -i inventories/<INVENTORY>.yaml playbooks/bootstrap.yaml -e 'ansible_user=<SUDO USER>' -K
|
|
```
|
|
|
|
### VPN Server
|
|
Istanzia un server [Wireguard](https://www.wireguard.com/ ) abilitando il tunneling del traffico.
|
|
|
|
**Target Hosts : wireguard_server**
|
|
|
|
#### Generazione chiavi e configurazioni dei Peer
|
|
Genera in */wg_clients/< ANSIBLE_HOSTNAME >/* i file di configurazione per i peer configurati.
|
|
|
|
**NB**
|
|
Il playbook e' a conoscenza della chiave privata del peer solo se e' stato necessario generarla durante l'esecuzione. In caso contrario viene riportata solo la chiave pubblica ed e' compito dell'utente inserire la chiave privata.
|
|
|
|
Il playbook genera le chiavi nei seguenti casi :
|
|
- nessuna chiave pubblica e' stata fornita e il peer non e' gia' configurato sul server
|
|
- Force Regeneration = True
|
|
|
|
|
|
|
|
#### Parametri
|
|
Il playbook si aspetta le seguenti variabili
|
|
```
|
|
wg_interface: wg0
|
|
wg_port: 51820
|
|
wg_server_address: 192.168.101.1/32
|
|
|
|
wg_peers:
|
|
- name: <MY LABEL>
|
|
# publicKey:
|
|
ip: "192.168.101.4/32"
|
|
allowedIPs :
|
|
- "192.168.101.0/24"
|
|
- "10.22.0.0/16"
|
|
forceRegeneration: False
|
|
```
|
|
|
|
### Pangolin
|
|
|
|
Il playbook installa docker e docker compose. Attraverso docker compose vengono poi lanciati i container per [pangolin](https://docs.pangolin.net), [gerbil](https://github.com/fosrl/gerbil) e [traefik](https://doc.traefik.io/traefik/).
|
|
|
|
Il playbook utilizza :
|
|
- [geerlingguy.docker](https://github.com/geerlingguy/ansible-role-docker) attraverso ansible galaxy
|
|
- I ruoli common e pangolin definiti in [pangolin-ansible-terraform](https://github.com/patelanuj21/pangolin-ansible-terraform/tree/main), riportati staticamente come ruolo *pangolin*
|
|
|
|
|
|
I parametri attesi dal playbook sono quelli definiti nei ruoli da cui dipende. |