Configuration du serveur Ansible

Une fois Ansible core installé et les machines cible préparés, on peut passer à la configuration générale d’Ansible et la création de l’arborescence.

Création des répertoires

mkdir -p ~/ansible/{production,test}/inventory/{group_vars,host_vars}
mkdir -p ~/ansible/{produdction,test}/roles

Création des fichiers

touch ~/ansible/{production,test}/playbook.yml
touch ~/ansible/{production,test}/inventory/00-inventory.yml

Création de l’inventaire, contenant les machines cible.

vim ~/ansible/test/inventory/00-inventory.yml

Contenu du fichier inventory

all:
  children:
    debian:
      hosts:
        cible1:
        cible2:

    redhat:
      hosts:
        cible3:

Je vais utiliser le module ansible-galaxy, pour créer l’arborescence Ansible, ce qui créera tous les fichiers nécessaires.

ansible-galaxy init ~/ansible/test/roles/upgrade
ansible-galaxy init ~/ansible/test/roles/installer_paquets

Je vais simplifier l’arborescence et supprimer les fichiers qui ne sont pas indispensables

rm -rf ~/ansible/test/roles/*/{files,handlers,meta,templates,tests}

Création d’une tache, pour la mise à jour des paquets

vim ~/ansible/test/roles/upgrade/tasks/main.yml

Contenu du fichier

tasks:
  - name: Mettre à jour la liste des paquets (apt ou yum)
    package:
      update_cache: yes
    when: ansible_facts['os_family'] == "Debian" or ansible_facts['os_family'] == "RedHat"

  - name: Appliquer les mises à jour des paquets
    package:
      name: "*"
      state: latest
    when: ansible_facts['os_family'] == "Debian" or ansible_facts['os_family'] == "RedHat"

Création d’une tache, pour installer des paquets

tasks:
  - name: Installer les paquets sur Debian/Ubuntu
    package:
      name: "{{ packages_list }}"
      state: present

Création du groupe de variables, c’est dans ce fichier que je vais déclarer la variable packages_list

mkdir ~/ansible/test/inventory/group_vars/all
vim ~/ansible/test/inventory/group_vars/all/main.yml

Contenu du fichier

packages_list: "git,curl,wget,htop,tree"