Skip to main content

Pratique 3 - Questions de résolution de problèmes (troubleshooting)

Table des matières



Playbook 1 - Installer Apache


1️⃣ Niveau facile

---
- name: Installer un package sur Ubuntu
hosts: all
become: yes
tasks:
- name: Installer Apache
apt:
name: apache2
state: present


Playbook 2 - Mettre à jour le système


2️⃣ Niveau facile

---
- name: Mettre à jour le système
hosts: all
become: yes
tasks:
- name: Mise à jour du système
yum:
update_cache: yes


Playbook 3 - Créer un utilisateur


3️⃣ Niveau facile

---
- name: Créer un utilisateur
hosts: all
become: yes
vars:
user: "deploy"
tasks:
- name: Ajouter l'utilisateur
user:
name: "{{ utilisateur }}"
shell: /bin/bash


Playbook 4 - Installer Docker


4️⃣ Niveau intermédiaire

---
- name: Installer Docker
hosts: all
become: yes
tasks:
- name: Installer Docker sur Ubuntu et CentOS
yum:
name: docker
state: present


Playbook 5 - Installer Nginx et ouvrir le port 80


5️⃣ Niveau intermédiaire

---
- name: Installer Nginx et ouvrir le port 80
hosts: all
become: yes
tasks:
- name: Installer Nginx
apt:
name: nginx
state: latest
notify:
- Restart Nginx

- name: Ouvrir le port 80
firewalld:
service: http
permanent: true
state: enabled

handlers:
- name: Restart Nginx
service:
name: nginx
state: restarted


Playbook 6 - Configurer SSH


6️⃣ Niveau intermédiaire

---
- name: Configurer SSH
hosts: all
become: yes
tasks:
- name: Modifier la configuration SSH
lineinfile:
path: /etc/ssh/sshd_config
line: "PermitRootLogin no"
state: present

- name: Redémarrer le service SSH
service:
name: ssh
state: restarted


Playbook 7 - Installer plusieurs packages


7️⃣ Niveau avancé

---
- name: Installation de packages et services
hosts: all
become: yes
tasks:
- name: Mettre à jour le cache des paquets
yum:
update_cache: yes

- name: Installer Apache
apt:
name: httpd
state: latest


Playbook 8 - Installer plusieurs packages


8️⃣ Niveau avancé

---
- name: Installer plusieurs packages
hosts: all
become: yes
tasks:
- name: Installer les packages
package:
name: "{{ item }}"
state: present
when: ansible_os_family == "Debian"
loop: apache2, nginx, mysql-server


Playbook 9 - Configurer SSH pour un nouvel utilisateur


9️⃣ Niveau difficile

---
- name: Configurer SSH pour un nouvel utilisateur
hosts: all
become: yes
vars:
new_user: "deploy"
tasks:
- name: Ajouter l'utilisateur
user:
name: "{{ new_user }}"
shell: "/bin/bash"
groups: sudo

- name: Ajouter la clé SSH
copy:
src: ~/.ssh/id_rsa.pub
dest: "/home/{{ newuser }}/.ssh/authorized_keys"
owner: "{{ newuser }}"
mode: "0600"


Playbook 10 - Configurer et sécuriser un serveur


🔟 Niveau très difficile

---
- name: Configurer et sécuriser un serveur
hosts: all
become: yes
tasks:
- name: Installer des outils de base
apt:
update_cache: yes
name:
- vim
- git
- curl
- wget
- unzip

- name: Ajouter un utilisateur
user:
name: "{{ deploy_user }}"
shell: /bin/bash
groups: sudo
state: present

- name: Désactiver le root SSH
lineinfile:
path: /etc/ssh/sshd_config
line: "PermitRootLogin no"
state: present
notify: Restart SSH

- name: Activer et démarrer le firewall
firewalld:
service: ssh
permanent: true
state: started

handlers:
- name: Restart SSH
service:
name: sshd
state: restarted


Playbook Capstone 11 - Trouvez les 10 erreurs dans ce Playbook


trouvez les 10 erreurs dans ce Playbook

Ce playbook Ansible contient 10 erreurs qui pourraient empêcher son exécution correcte ou entraîner des comportements inattendus. Votre mission est de les identifier une par une, d'expliquer pourquoi elles posent problème et de proposer une correction adaptée.

Votre mission :
  • Identifier chaque erreur.
  • Expliquer pourquoi c'est une erreur.
  • Proposer une correction.

Barème : 2 points par erreur corrigée. Total : 20 points.

Fichier playbook-erreurs.yml (avec erreurs)

---
- name: Playbook avec erreurs
hosts: all
become: true

tasks:

- name: Installer Apache
apt:
name: apache2
state: present

- name: Démarrer Apache
service_gp_update:
name: apache2
state: started

- name: Exécuter une commande shell
shell: echo "Déploiement terminé

- name: Copier un fichier
copy:
src: "{{ chemin_source }}"
dest: "/etc/config.conf"

- name: Créer un utilisateur
user:
name:
- "toto"
state: present

- name: Obtenir l'adresse IP
command: ip a | grep inet
register: ip_result
- debug:
msg: "L'adresse IP est {{ ip_result }}"

- name: Installer plusieurs paquets
apt:
name: "{{ item }}"
state: present
loop:
[nginx, git, unzip]

- name: Vérifier la version d'Ubuntu
debug:
msg: "Vous êtes sur Ubuntu 20.04"
when: ansible_distribution_version == 20.04

- name: Exécuter une commande en root
command: echo "Hello World"
become: yes
become_user: user

- name: Supprimer un fichier
file:
path: /tmp/fichier.txt
state: absent