Automatiser l'administration
Pourquoi automatiser, script impératif contre état décrit, idempotence, pousser sans agent ou tirer avec agent, et Ansible : inventaire, playbook, tâches, modules, variables, handlers et lecture d'une exécution.
- 25 cartes
- 5 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Mises en situation
- Comprendre
Quelques cartes du deck
Gestion de configuration : de quoi s'agit-il ?
Voir la réponse
Pratique qui consiste à mettre et à maintenir un parc de machines dans l'état voulu par des outils, plutôt qu'en tapant des commandes à la main sur chacune.
Deux serveurs installés à la main finissent par différer sans que personne sache pourquoi. Un outil applique la même description à tous, la rejoue après une panne et la rend relisible.
Voici un playbook et la sortie de sa première exécution. On le relance sans rien changer. Quel récapitulatif de fin affiche-t-il ?
```yaml
- hosts: localhost
connection: local
gather_facts: false
tasks:
- name: Create the site directory
ansible.builtin.file: { path: /tmp/ans/www, state: directory }
- name: Write the config
ansible.builtin.copy: { content: "port 80\n", dest: /tmp/ans/www/app.conf }
notify: Restart app
- name: Count the files
ansible.builtin.command: ls /tmp/ans/www
handlers:
- name: Restart app
ansible.builtin.debug: { msg: restarted }
TASK [Create the site directory] ***
changed: [localhost]
TASK [Write the config] ***
changed: [localhost]
TASK [Count the files] ***
changed: [localhost]
RUNNING HANDLER [Restart app] ***
ok: [localhost] => {
"msg": "restarted"
}
PLAY RECAP ***
localhost : ok=4 changed=3 unreachable=0 failed=0`ok=3 changed=1ok=3 changed=0ok=4 changed=3ok=4 changed=1
Voir la réponse
ok=3 changed=1fileetcopyconstatent que l'état voulu est déjà là :ok. Le modulecommandne sait pas ce qu'il change et rapporte toujourschanged. Commecopyn'a rien changé, le handler n'est pas notifié et ne tourne pas. Le compteurokcompte toute tâche réussie, changée ou non : 3 tâches, dont 1changed.Ansible agit par … depuis le poste de contrôle, sans … installé sur les machines gérées : c'est un fonctionnement en poussée.
Voir la réponse
Ansible agit par SSH depuis le poste de contrôle, sans agent installé sur les machines gérées : c'est un fonctionnement en poussée.
En poussée, c'est l'administrateur qui déclenche l'exécution quand il veut. En tirée (Puppet, Chef), chaque machine interroge périodiquement un serveur central.
Infrastructure as code : de quoi s'agit-il ?
Voir la réponse
Décrire les serveurs, leurs réglages et leurs logiciels dans des fichiers texte, versionnés et relus comme du code.
Les fichiers vivent dans Git : on voit qui a changé quoi, on peut revenir en arrière et recréer la machine à l'identique au lieu de la réparer à la main.
Un script Bash exécute
echo 'port 80' >> app.confpour configurer chaque serveur. Après trois exécutions, le fichier contient trois lignesport 80. Quelle correction applique l'approche déclarative ?- Une tâche
lineinfilequi assure que la ligneport 80est présente - Une tâche
shellqui lance le mêmeecho, mais seulement une fois par jour - Un second script qui supprime ensuite toutes les lignes en double du fichier
- Une boucle qui relance le script jusqu'à ce que le fichier ne change plus du tout
Voir la réponse
Une tâche
lineinfilequi assure que la ligneport 80est présenteL'ajout est une action : chaque passage la répète.
lineinfiledécrit un état (cette ligne est présente) : si elle y est déjà, la tâche estoket le fichier reste intact.- Une tâche