Créer un projet#

Objectif

Création d’un projet Ansible vierge.

Prérequis#

Pour que tout se passe comme prévu, vous aurez besoin que soient installés sur votre machine de travail :

Pour notre cas de référence (Debian Bullseye), atteindre ces prérequis passe par le lancement des commandes suivantes :

$ sudo apt update 
$ sudo apt install git -y

Création de la structure#

Pour disposer de notre installation locale d’Ansible, nous devons nous placer dans le répertoire contenant le virtualenv géré par direnv :

$ cd ~/ansible-workspaces

Puis, nous pouvons nous appuyer sur la commande ansible-galaxy pour initier la structure de notre projet :

$ ansible-galaxy collection init ultimate.training
- Collection ultimate.training was created successfully

$ cd ultimate/training

$ tree -a
.
├── docs
├── galaxy.yml
├── plugins
│   └── README.md
├── README.md
└── roles

3 directories, 3 files

On peut voir qu’ansible-galaxy a créé le minimum. À nous de remplir le reste pour obtenir un espace de travail complet.

$ mkdir -p playbooks/group_vars group_vars host_vars
mkdir: création du répertoire 'playbooks'
mkdir: création du répertoire 'playbooks/group_vars'
mkdir: création du répertoire 'group_vars'
mkdir: création du répertoire 'host_vars'

$ touch playbooks/group_vars/all.yml group_vars/all.yml host_vars/.gitkeep roles/.gitkeep docs/.gitkeep inventory

$ tree -a
.
├── docs
│   └── .gitkeep
├── galaxy.yml
├── group_vars
│   └── all.yml
├── host_vars
│   └── .gitkeep
├── inventory
├── playbooks
│   └── group_vars
│       └── all.yml
├── plugins
│   └── README.md
├── README.md
└── roles
    └── .gitkeep

7 directories, 9 files

Nous avons maintenant un cadre de travail qui correspond à nos attentes, nous pouvons l’encadrer par une gestion de version :

$ pwd
/home/user/ansible-workspaces/ultimate/training

$ git init
Dépôt Git vide initialisé dans /home/user/ansible-workspaces/ultimate/training/.git/

$ git add .
$ git commit -m "ultimate init"
[main (commit racine) df65334] ultimate init
 7 files changed, 96 insertions(+)
 create mode 100644 README.md
 create mode 100644 galaxy.yml
 create mode 100644 group_vars/all.yml
 create mode 100644 host_vars/.gitkeep
 create mode 100644 inventory
 create mode 100644 playbooks/group_vars/all.yml
 create mode 100644 plugins/README.md

Ligne d’arrivée#

Félicitations, vous avez créé votre premier projet Ansible normé. Libre à vous de lancer quelques commandes de plus pour venir lier votre dépôt local git avec une plateforme centrale comme GitHub ou GitLab.