Chatonkademy - Billet N°2 - Ansible pour les mises à jour

, par  Genma , popularité : 2%

Série de billets sur le projet Chatonkademy

Introduction

Un billet déjà écrit avec quelques commandes Ansible Jouons avec Ansible et Virtualbox, dans celui-ci je donnerai quelques astuces et commandes sur l’usage d’Ansible pour des choses simples. En effet, le projet Chatonkademy contient, entre autre 40 machines virtuelles sous Debian 9 (une par étudiant), que je souhaite gérer facilement. D’où Ansible.

Prérequis

Avoir des machines installées, avec un serveur SSH actif et configuré. L’installation des 40 machines, la configuration par SSH (pour automatiser la création de l’utilisateur, de la machine etc.) fera l’objet d’un billet plus complexe sur Ansible. Car il y a une seule IP publique pour la machine superviseur (sous Proxmox), on part d’un parc de 40 machines déjà installées et configurées à minima. Toutes accessibles en SSH sur un port différent du 22 (avec redirection au niveau de l’hyperviseur).

Connexion SSH par clef publique

Copie de la clef ssh publique de l’utilisateur que j’ai sur ma machine principale (j’ai le même utilisateur sur les machines en face) sur toutes les machines via

#!/bin/bash
sshpass -p 'password' ssh-copy-id genma@chaton01.chatonkademy.com -p 20122
sshpass -p 'password' ssh-copy-id genma@chaton02.chatonkademy.com -p 20222
sshpass -p 'password' ssh-copy-id genma@chaton03.chatonkademy.com -p 20322

Pour pouvoir me connecter en ssh depuis ma machines dans .ssh/config j’ai ajoué

host chaton01.chatonkademy.com
  HostName chaton01.chatonkademy.com
  Port 20122
host chaton02.chatonkademy.com
  HostName chaton02.chatonkademy.com
  Port 20222
host chaton03.chatonkademy.com
  HostName chaton03.chatonkademy.com
  Port 20322
(...)

Ansible les bases

Dans le fichier /etc/ansible/hosts j’ai ajouté

[chatonkademy_std]
chaton01.chatonkademy.com:20122
chaton02.chatonkademy.com:20222
chaton03.chatonkademy.com:20322
(...)

Quelques tests avec un appel de commande pour valider qu’Ansible marche bien

ansible chatonkademy_std -m command -u genma --args "uptime" --one-line
ansible chatonkademy_std  -m command -u genma --args "df -h" --one-line

On remplacera le args par une commande simple que l’on veut et on redirigera la sortie standard dans un fichier que l’on analysera par la suite.

Ansible playbook pour mises à jours

Création d’un playbook Ansible pour les mises à jours dans le fichier hosts update_upgrade.yml

---
- hosts: chatonkademy_std
  remote_user: genma
  become_method: sudo
  become_user: root

  tasks:
  - name: update and upgrade apt packages
    apt:
      update_cache=yes
      state=latest
      upgrade=yes

Lancement du playbook

ansible-playbook -i /etc/ansible/hosts update_upgrade.yml -K

Résultat de l’exécution

ansible-playbook -i inventory/production/chatonkademy update_upgrade.yml -K 
SUDO password: 
[DEPRECATION WARNING]: Instead of sudo/sudo_user, use become/become_user and make sure become_method is 'sudo' (default). This feature will be removed in version 2.6. 
Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.

PLAY [chatonkademy] **********************************************************

TASK [Gathering Facts] ******************************************************
ok: [chaton01.chatonkademy.com]
ok: [chaton02.chatonkademy.com]
ok: [chaton03.chatonkademy.com]
ok: [chaton04.chatonkademy.com]

TASK [update and upgrade apt packages] **************************************
 [WARNING]: Could not find aptitude. Using apt-get instead.
changed: [chaton04.chatonkademy.com]
changed: [chaton01.chatonkademy.com]
changed: [chaton03.chatonkademy.com]
changed: [chaton02.chatonkademy.com]

PLAY RECAP *****************************************************************
chaton02.chatonkademy.com : ok=2    changed=0    unreachable=0    failed=0   
chaton03.chatonkademy.com : ok=2    changed=0    unreachable=0    failed=0   
chaton04.chatonkademy.com : ok=2    changed=0    unreachable=0    failed=0

Conclusion

Les machines virtuelles sont utilisables via Ansible pour la maintenance etc. On va pouvoir des choses intéressantes. A suivre dans un projet billet sur le projet Chatonkademy !