Installer Terraform et Ansible sur Debian 13 (Trixie)
Monter un poste de contrôle Terraform et Ansible sur Debian 13 ne prend pas dix minutes par hasard : les deux outils ne viennent pas de la même source, et Debian 13 a durci l’installation de paquets Python. Voici la procédure telle que je l’applique, avec les deux ou trois endroits où ça coince réellement.
Contexte
Section intitulée « Contexte »Debian 13 fournit Ansible dans ses dépôts officiels, mais pas Terraform. On utilise donc deux sources :
- Ansible : dépôt Debian
trixie/main(paquetsansibleouansible-core) - Terraform : dépôt APT officiel HashiCorp
apt.releases.hashicorp.com
Les deux s’installent via APT, ce qui garde la mise à jour intégrée au cycle
apt upgrade.
Prérequis
Section intitulée « Prérequis »sudo apt updatesudo apt install -y curl gpg ca-certificates lsb-releaseVérifier la version du système :
cat /etc/os-release | grep -E 'VERSION_CODENAME|PRETTY_NAME'Résultat attendu : PRETTY_NAME="Debian GNU/Linux 13 (trixie)" et
VERSION_CODENAME=trixie.
1. Installation de Terraform
Section intitulée « 1. Installation de Terraform »1.1 Ajout de la clé GPG HashiCorp
Section intitulée « 1.1 Ajout de la clé GPG HashiCorp »sudo install -m 0755 -d /etc/apt/keyringscurl -fsSL https://apt.releases.hashicorp.com/gpg \ | sudo gpg --batch --yes --dearmor -o /etc/apt/keyrings/hashicorp-archive-keyring.gpgsudo chmod a+r /etc/apt/keyrings/hashicorp-archive-keyring.gpgContrôler l’empreinte de la clé :
gpg --no-default-keyring --keyring /etc/apt/keyrings/hashicorp-archive-keyring.gpg --fingerprint1.2 Déclaration du dépôt
Section intitulée « 1.2 Déclaration du dépôt »echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com trixie main" \ | sudo tee /etc/apt/sources.list.d/hashicorp.listsudo apt update1.3 Installation
Section intitulée « 1.3 Installation »sudo apt install -y terraformterraform versionSortie de test :
Terraform v1.16.1on linux_amd641.4 Épingler une version précise (optionnel)
Section intitulée « 1.4 Épingler une version précise (optionnel) »Utile pour aligner un poste sur la version d’une équipe ou d’un pipeline CI.
apt-cache policy terraform # lister les versions disponiblessudo apt install -y terraform=1.13.5-1sudo apt-mark hold terraform # bloquer les mises à jourPour lever le blocage : sudo apt-mark unhold terraform.
1.5 Complétion shell
Section intitulée « 1.5 Complétion shell »terraform -install-autocompleteexec $SHELL2. Installation d’Ansible
Section intitulée « 2. Installation d’Ansible »2.1 Depuis les dépôts Debian (recommandé)
Section intitulée « 2.1 Depuis les dépôts Debian (recommandé) »Deux paquets, deux périmètres :
| Paquet | Contenu | Cas d’usage |
|---|---|---|
ansible-core |
moteur seul, collections ansible.builtin |
environnements maîtrisés, collections gérées via requirements.yml |
ansible |
moteur + ~100 collections communautaires | poste d’admin, formation, prise en main rapide |
sudo apt install -y ansibleansible --versionSortie de test :
ansible [core 2.19.4] python version = 3.13.xdpkg -l ansible | tail -1# ii ansible 12.0.0+dfsg-0+deb13u1 all2.2 Version plus récente via pipx (optionnel)
Section intitulée « 2.2 Version plus récente via pipx (optionnel) »Debian 13 applique la PEP 668 : pip install ansible en dehors d’un venv est
refusé (externally-managed-environment). La bonne méthode est pipx, qui
isole Ansible dans son propre environnement virtuel.
sudo apt install -y pipxpipx ensurepathpipx install --include-deps ansibleexec $SHELLansible --versionRésultat au moment du test : ansible [core 2.21.3], installé dans
~/.local/pipx/venvs/ansible, binaires exposés dans ~/.local/bin.
2.3 Dépendances utiles selon les cibles
Section intitulée « 2.3 Dépendances utiles selon les cibles »# gestion de dépôts Git dans les playbookssudo apt install -y git
# modules Windows / WinRMsudo apt install -y python3-winrm
# vérification de qualité des playbookspipx install ansible-lint3. Validation
Section intitulée « 3. Validation »3.1 Terraform : projet minimal
Section intitulée « 3.1 Terraform : projet minimal »mkdir -p ~/lab-tf && cd ~/lab-tfcat > main.tf <<'EOF'terraform { required_version = ">= 1.5" required_providers { local = { source = "hashicorp/local" version = "~> 2.5" } }}
resource "local_file" "hello" { filename = "${path.module}/hello.txt" content = "Terraform OK sur Debian 13\n"}EOF
terraform initterraform fmt -checkterraform planterraform apply -auto-approvecat hello.txtSortie attendue :
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.Terraform OK sur Debian 13Nettoyage : terraform destroy -auto-approve.
3.2 Ansible : inventaire et playbook de contrôle
Section intitulée « 3.2 Ansible : inventaire et playbook de contrôle »mkdir -p ~/lab-ansible && cd ~/lab-ansible
cat > ansible.cfg <<'EOF'[defaults]inventory = ./inventory.inihost_key_checking = Falseinterpreter_python = auto_silentstdout_callback = yamlEOF
cat > inventory.ini <<'EOF'[local]localhost ansible_connection=localEOF
cat > ping.yml <<'EOF'- name: Verification de base hosts: local gather_facts: true tasks: - name: Ping ansible.builtin.ping:
- name: Afficher la distribution ansible.builtin.debug: msg: "{{ ansible_distribution }} {{ ansible_distribution_version }}"EOF
ansible local -m pingansible-playbook ping.ymlSortie attendue :
TASK [Afficher la distribution] ****ok: [localhost] => msg: Debian 13.6
PLAY RECAP ****localhost : ok=3 changed=0 unreachable=0 failed=03.3 Cibles distantes en SSH
Section intitulée « 3.3 Cibles distantes en SSH »ssh-keygen -t ed25519 -C "ansible-controller"ssh-copy-id admin@192.0.2.10ansible all -i '192.0.2.10,' -u admin -m pingAvec élévation de privilèges : ajouter --become --ask-become-pass, ou
become: true dans le playbook.
4. Maintenance
Section intitulée « 4. Maintenance »sudo apt update && sudo apt upgrade # Terraform et Ansible suivent le cycle APTapt-mark showhold # lister les paquets épingléspipx upgrade-all # si Ansible installé via pipxPour les collections Ansible gérées hors distribution :
ansible-galaxy collection install -r requirements.yml --upgradeRéférences
Section intitulée « Références »- Dépôt APT HashiCorp : developer.hashicorp.com/terraform/install
- Documentation Ansible : docs.ansible.com/ansible/latest/installation_guide
- PEP 668 et Debian : peps.python.org/pep-0668