Aller au contenu

Lab 02 : Inventaire Statique Ansible

Dans cet atelier, vous allez apprendre à créer et gérer un inventaire Ansible. Vous découvrirez comment structurer un inventaire statique aux formats INI et YAML, organiser les hôtes en groupes et sous-groupes, et définir des variables d’inventaire.

Dans cette partie, vous allez apprendre à :

  • Créer un inventaire statique au format INI et YAML
  • Organiser les hôtes en groupes et sous-groupes
  • Définir des variables d’inventaire pour les hôtes et les groupes

Avant de se lancer dans la création de notre inventaire statique, commençons par créer une infrastructure. Pour cela :

  1. Créez des AK/SK et exporter les dans les variables d’environnement :
Terminal window
export TF_VAR_access_key_id="xxxxx"
export TF_VAR_secret_key_id="xxxxxx"
export TF_VAR_region="eu-west-2"
  1. Créer une clé ssh avec cette commande en gardant le nom du fichier proposé :
Terminal window
ssh-keygen -a 64 -t ed25519
  1. Clonez ce dépot git :
Terminal window
git clone https://github.com/outscale-srt20/lab-ansible.git
  1. Créez l’infrastructure avec Terraform
Terminal window
cd lab-ansible.git
terraform init
terraform apply
  1. Récupérez l’ip publique de la VM bastion-tp
  2. Ajouter dans votre configuration ssh les lignes suivantes en utilisant l’adresse IP de votre bastion et le chemin de votre clé SSH :
Host bastion-tp 171.1.1.1
HostName 171.1.1.1
User outscale
IdentityFile ~/.ssh/id_ed25519
Host 10.2.*
User outscale
ProxyJump bastion-tp
IdentityFile ~/.ssh/id_ed25519
  1. Vérifiez que vous pouvez vous connecter en SSH aux machines bastion-tp et 10.2.2.10.

Pour créer un inventaire au format INI, suivez les étapes ci-dessous :

  1. Créez un fichier nommé hosts.ini dans votre répertoire de projet :
  2. Ajoutez la liste de vos hôtes et groupes :
[webservers]
10.2.2.10
[dbservers]
10.2.2.20
  1. Enregistrez et fermez le fichier.
  2. Lancez la commande suivante :
Terminal window
ansible-inventory -i hosts.ini --list

Pour créer un inventaire au format YAML, suivez les étapes ci-dessous :

  1. Créez un fichier nommé hosts.yml dans votre répertoire de projet :
  2. Ajoutez la liste de vos hôtes et groupes :
hosts.yml
webservers:
hosts:
10.2.2.10:
dbservers:
hosts:
10.2.2.20:
  1. Enregistrez et fermez le fichier.
  2. Lancez la commande suivante :
Terminal window
ansible-inventory -i hosts.yml --list

Les groupes et sous-groupes permettent de mieux organiser et gérer vos hôtes. Vous pouvez créer des groupes logiques pour regrouper des hôtes similaires.

  1. Dans vos fichiers hosts.ini ou hosts.yml, ajoutez des sous-groupes pour organiser vos hôtes :
hosts.ini
[webservers]
10.2.2.10
[dbservers]
10.2.2.20
[databases:children]
dbservers
hosts.yml
webservers:
hosts:
10.2.2.10:
dbservers:
hosts:
10.2.2.20:
databases:
dbservers
  1. Enregistrez et fermez le fichier.
  2. Lancez la commande suivante :
Terminal window
ansible-inventory -i hosts.ini --graph

Les variables d’inventaire permettent de personnaliser les configurations pour des groupes ou des hôtes spécifiques.

  1. Ajoutez des variables pour les groupes et les hôtes dans votre fichier hosts ou hosts.yml :
# hosts
[webservers]
10.2.2.10
[dbservers]
10.2.2.20
[webservers:vars]
http_port=80
[dbservers:vars]
db_name=mydatabase
[all:vars]
ansible_user=outscale
hosts.yml
all:
vars:
ansible_user: outscale
webservers:
hosts:
10.2.2.10:
vars:
http_port: 80
dbservers:
hosts:
10.2.2.20:
vars:
db_name: mydatabase
  1. Enregistrez et fermez le fichier.
  2. Lancez la commande suivante :
Terminal window
ansible-inventory -i hosts.ini --graph --vars

Pour vérifier que votre inventaire est correctement configuré, exécutez une commande simple sur tous les hôtes pour voir si les variables et les groupes sont pris en compte :

Terminal window
ansible -m ping -i hosts.ini all

Vous devriez voir une sortie détaillant les variables et les groupes pour chaque hôte.

Ajoutez des variables dans vos inventaires aux niveaux des hosts.