# Inventory

L’elenco delle macchine da gestire viene specificato nel file `inventory`, un file di testo che può essere redatto in diversi formati, tra cui `YAML` o `INI`. Tale file contiene gli indirizzi IP o i nomi DNS dei nodi che saranno gestiti da Ansible.

Il percorso predefinito per il file inventory è `/etc/ansible/hosts`. Qualora si utilizzi un file personalizzato, è necessario specificarlo durante l’esecuzione dei comandi Ansible tramite l’opzione -i. Ad esempio:

```bash
ansible-playbook -i inventory playbook/my-playbook.yml -K --ask-vault-pass
```

In questo comando, `-i` indica il file inventory, mentre `-K` (o `--ask-become-pass`) richiede la password per l’escalation dei privilegi.

## Raggruppamento degli Host

Gli host possono essere organizzati in gruppi secondo diverse best practices, come:

- `what`: raggruppamento per tipologia (es. webserver, dbserver)
- `where`: raggruppamento per ubicazione geografica
- `when`: raggruppamento per utilizzo (es. test, sviluppo, produzione)

Di seguito un esempio di file inventory in formato INI:

```ini
mail.example.com

[webservers]
foo.example.com
bar.example.com

[dbservers]
192.168.1.10
192.168.1.11
192.168.1.[20:30]
```

## Variabili

È possibile definire variabili specifiche per ciascun host o per i gruppi di host. Alcuni esempi:

- `ansible_python_interpreter=/usr/bin/python3`
- `ansible_user=myuser`

## Verifica della configurazione

Per verificare che il file inventory sia stato compilato correttamente, è possibile utilizzare il seguente comando:

```bash
cd ~/git/ansible

ansible-inventory --list -i inventory
```

Se il file è stato redatto senza errori, il comando restituirà un riepilogo strutturato del contenuto dell’inventory.
