Skip to content

Installing ansible

Objectif

Explorer les méthodes d'installation d'ansible sur les distributions courantes : installation manuelle via le gestionnaire de paquets, utilisation des PPA, installation via pip dans un environnement virtuel Python et provisioning avec vagrant (ajout).

Durée

~45 minutes (3 challenges + manipulations VM)

Challenge 1

Challenge link

La configuration de la VM Ubuntu sur VirtualBox a déjà été faite sur le Vagrantfile de l'atelier.

Vagrantfile
  config.vm.define "ubuntu" do |ubuntu|
    ubuntu.vm.box = "bento/ubuntu-22.04"
    ubuntu.vm.hostname = "ubuntu"
    ubuntu.vm.network :private_network, ip: "#{NETWORK_PREFIX}.40"
    ubuntu.vm.synced_folder ".", "/vagrant", type: "virtualbox"
    ubuntu.vm.provider "virtualbox" do |vbox|
       vbox.memory = 1024
       vbox.cpus = 2
       vbox.check_guest_additions = false
    end
  end

Lancement de la VM avec vagrant.

vagrant up ubuntu

Je fais une susbtitution de la dernière commande pour remplacer le mot up par ssh -c suivi des instructions que je souhaite donner à la VM ciblée (qui restera ubuntu car la dernière option reste ubuntu...).

Je rafraichis la liste et la version des paquets disponibles, pour ensuite installer ansible-core et tester son output afin de confirmer qu'ansible est installé.

Info

Une particularité de vagrant sera utilisée pour la suite des ateliers : l'utilisateur vagrant peut exécuter des commandes avec sudo sans mot de passe. (plus simple dans notre cas).

^up^ssh -c "sudo apt update; sudo apt install -y ansible-core; ansible --version || echo 'failed'"

Je peux ensuite détruire la VM.

vagrant destroy -f !$

Installation manuelle d'ansible sur Ubuntu via Vagrant SSH

Le but de vagrant est aussi d'automatiser cette action...

Possible avec ansible_local pour le faire nativement... en ajoutant la ligne ansible.install = true au provisionning de la VM dans le Vagrantfile.

Je lancerai aussi un playbook setup.yml pour confirmer qu'ansible est installé (vu que vagrant a obligatoirement besoin d'un playbook, même vide...).

Vagrantfile
  config.vm.define "ubuntu" do |ubuntu|
    ubuntu.vm.box = "bento/ubuntu-22.04"
    ubuntu.vm.hostname = "ubuntu"
    ubuntu.vm.network :private_network, ip: "#{NETWORK_PREFIX}.40"
    ubuntu.vm.synced_folder ".", "/vagrant", type: "virtualbox"
    ubuntu.vm.provider "virtualbox" do |vbox|
       vbox.memory = 1024
       vbox.cpus = 2
       vbox.check_guest_additions = false
    end
    ubuntu.vm.provision "ansible_local" do |ansible|
      ansible.install = true
      ansible.playbook = "setup.yml"
    end
  end
setup.yml
---
- name: "Vérification installation d'`ansible`"
  hosts: ubuntu
  gather_facts: no
  tasks:
    - name: "Confirmation `ansible`"
      debug:
        msg: "{{ ansible_version.full }} sur {{ inventory_hostname }}"

Une fois vagrant up ubuntu effectué, ansible s'installe avec le provisionning par vagrant et run le playbook instruit.

Provisioning Vagrant avec ansible_local

Une fois le playbook lancé.

Exécution du playbook setup.yml confirmant l'installation

Si la VM est déjà lancée, il est possible de faire vagrant provision ubuntu...

Challenge 2

Challenge link

Les Personal Package Archives (abrégés PPA) sont des dépôts proposés par Canonical pour les personnes souhaitant accéder aux dernières version des paquets proposés par leur(s) développeur(s), ou accéder à des paquets non conformes au circuit de validation.

Les PPA sont liés à la plateforme Launchpad (service de Canonical) qui prend le code source envoyé par les développeurs et génère des paquets .deb.

Ainsi, pour vérifier qu'ansible s'installe via le PPA, on peut comparer la version disponible dans les dépôts APT avec celle fournie par le PPA.

vagrant up ubuntu
^up^ssh -c "apt-cache madison ansible"

Version d'ansible disponible dans les dépôts APT par défaut

La version 2.10.7 est disponible au vendredi 13 mars 2026 dans les dépôts APT. Si on ajoute le PPA associé et que l'on re-vérifie la version d'ansible disponible.

vagrant ssh -c "sudo apt-add-repository ppa:ansible/ansible -y" ubuntu
vagrant ssh -c "apt-cache madison ansible" ubuntu

Version d'ansible après ajout du PPA

Après l'ajout, la version 2.17.14 d'ansible-core sera installé

vagrant ssh -c "sudo apt install -y ansible-core" ubuntu

Installation d'ansible-core via le PPA

Sinon, la version 2.12.0 sur les dépots APT. (Installation refaite sans l'ajout du dépôt PPA)

Installation d'ansible-core sans le PPA - version 2.12.0

Challenge 3

Challenge link

Pareillement à la VM Ubuntu, le Vagrantfile contient déjà le provisionning de la VM Rocky Linux.

Vagrantfile
NETWORK_PREFIX = "192.168.56"

Vagrant.configure("2") do |config|

  config.vm.define "rocky" do |rocky|
    rocky.vm.box = "bento/rockylinux-9"
    rocky.vm.hostname = "rocky"
    rocky.vm.network :private_network, ip: "#{NETWORK_PREFIX}.10"
    rocky.vm.synced_folder ".", "/vagrant", type: "virtualbox"
    rocky.vm.provider "virtualbox" do |vbox|
       vbox.memory = 1024
       vbox.cpus = 2
       vbox.check_guest_additions = false
    end
  end

Démarrage de la VM Rocky Linux.

vagrant up rocky

Ensuite, j'initialise un environnement virtuel dans le home dir de l'utilisateur vagrant.

La divergence avec l'exemple donné sous Debian est le gestionnaire de paquets, qui sous Rocky Linux est dnf au lieu d'apt.

Pas besoin d'installer le paquet python3-venv car venv est inclu dans le paquet python3.x86_64 (natif)

Je vérifie l'utilisation du venv par la commande command -v python qui indique le chemin absolu vers l'exécutable python3 (qui sera changé pour /home/vagrant/.venv/bin/python3).

^up^ssh -c "python3 -m venv .venv; source .venv/bin/activate; command -v python3"

Activation du venv Python sur Rocky Linux

Le venv n'est actif que pour la commande que j'ai lancée dans mon cas. Si la commande command -v est re-exécutée, l'exécutable python3 trouvé sera celui global.

vagrant ssh -c "command -v python3" rocky

Python3 global vs venv - chemin différent

Je retiens

  • Plusieurs méthodes d'installation : gestionnaire de paquets natif, PPA (Ubuntu), pip + venv, ou provisioning vagrant avec ansible_local.
  • Les PPA donnent accès à des versions plus récentes qu'apt seul, mais ajoutent un dépôt tiers.
  • venv isole les dépendances Python et n'est actif que dans le shell courant.
  • L'utilisateur vagrant dispose de sudo sans mot de passe, ce qui simplifie les labs.

Cheatsheet

Symptôme Cause probable Correction
vagrant up échoue avec « box not found » La box bento/ubuntu-22.04 ou bento/rockylinux-9 n'est pas téléchargée vagrant box add bento/ubuntu-22.04 puis relancer, ou laisser vagrant up la récupérer (prévoir le temps de téléchargement)
ansible --versionfailed après apt install ansible-core Les dépôts APT n'ont pas été rafraîchis, paquet introuvable Lancer sudo apt update avant le install, puis vérifier avec apt-cache madison ansible-core
apt-add-repository ppa:ansible/ansible échoue (GPG / clé manquante) software-properties-common absent ou clé de signature non importée Installer le paquet : sudo apt install -y software-properties-common, relancer l'ajout du PPA
command -v python3 renvoie /usr/bin/python3 après source .venv/bin/activate Le venv n'est activé que dans le shell courant ; chaque vagrant ssh -c ouvre un nouveau shell Chaîner activation et commande dans la même invocation : vagrant ssh -c "source .venv/bin/activate && command -v python3"
ansible_local ne déclenche rien au vagrant up Pas de playbook déclaré ou fichier absent du dossier Vagrant Créer setup.yml (même vide avec une tâche debug) à la racine du Vagrantfile avant vagrant up ou vagrant provision

Sources (principales)


Suite : Authentication