88 lines
3.4 KiB
Markdown
88 lines
3.4 KiB
Markdown
# TP Ansible
|
|
|
|
## Objectif du TP
|
|
|
|
Ce TP est une introduction pratique à Ansible. Le but est d'observer le déploiement automatisé à l'aide d'Ansible. Ce TP est donné dans le cadre du cours TLC au [département d'Informatique et d'Electronique](https://istic.univ-rennes1.fr/) de l'[Université de Rennes 1](https://www.univ-rennes1.fr/).
|
|
|
|
# Modalités de rendu
|
|
|
|
Tous les rendus TLC se font à travers le gitlab de l'ISTIC : https://gitlab2.istic.univ-rennes1.fr/
|
|
|
|
Si vous ne l'avez pas déjà fait, créez sur Gitlab ISTIC un groupe nommé `TLC_2025_<votre_nom>_<votre_prenom>`
|
|
|
|
Pour chaque TP, vous devrez créer un projet dans ce groupe (il est fortement conseillé de fork le repo du projet en le plaçant dans votre groupe gitlab), nommé `TP<numero>_<votre_nom>_<votre_prenom>` et le projet finale nommé `Projet_<votre_nom>_<votre_prenom>`
|
|
|
|
Pour chaque TP, vous devrez ajouter votre enseignant en tant que membre du projet avec le rôle de "Reporter" pour permettre la correction.
|
|
|
|
## Objectif 1 : Déploiement d'une application LAMP sur des VMs avec Ansible
|
|
|
|
### Tâche 0 (Création des VMs avec Vagrant)
|
|
|
|
> Vous pouvez utiliser les Hyperviseurs libvirt ou VirtualBox
|
|
> /!\ Installer les plugins vagrant en fonction de l'Hyperviseur
|
|
|
|
- Utilisez le Vagrantfile dans le répertoire `vagrant` pour créer des machines virtuelles en local.
|
|
Plus d'informations dans [run_demo.md](run_demo.md).
|
|
|
|
|
|
### Tâche 1 (Déploiement de l'application LAMP)
|
|
> LAMP = Linux, Apache, MySQL, PHP
|
|
> /!\ Dans la machine Hôte installer et configurer Ansible
|
|
|
|
- En s'inspirant du playbook disponible [lamp_ubuntu2204_2hosts_withroles](lamp_ubuntu2204_2hosts_withroles), déployez cette simple application Ansible sur vos VMs.
|
|
|
|
Sur votre portable :
|
|
|
|
```bash
|
|
apt-get install ansible
|
|
cd lamp_ubuntu2204_2hosts_withroles
|
|
# éditez le fichier hosts pour y mettre les IP de vos VMs ainsi que le login et le mot de passe
|
|
nano -w hosts
|
|
ansible-playbook site.yml -i hosts
|
|
```
|
|
|
|
Essayez d'accéder à http://ADRESSE_IP_DE_VOTRE_VM_WEB/index.php
|
|
|
|
## Objectif 2 : Déploiement d'un cluster microk8s
|
|
|
|
|
|

|
|
|
|
|
|
### Tâche 1 : Provisionnement du Control Node
|
|
|
|
- Créer un nouveau playbook pour installer un **control node** dans une VM.
|
|
|
|
Tout d'abord, créez la structure de votre playbook. Prenez le temps de lire les recommandations [ici](https://docs.ansible.com/ansible/latest/tips_tricks/sample_setup.html).
|
|
|
|
En utilisant les modules apt, snap et shell, créez un playbook pour installer microk8s.
|
|
|
|
<details>
|
|
<summary>Cliquez ici pour des lien utiles</summary>
|
|
|
|
- Install Docker
|
|
|
|
[Install Docker on ubuntu](https://docs.docker.com/engine/install/ubuntu/)
|
|
|
|
- Install microk8s
|
|
|
|
[See docs](https://microk8s.io/docs/getting-started)
|
|
|
|
</details>
|
|
|
|
### Tâche 2 : Provisionnement du Worker node
|
|
- Étendez votre playbook pour installer un **worker node** dans une VM. Et ajoutez-le à votre cluster.
|
|
|
|
### Tâche 3 : Déploiement d'un service dans le cluster
|
|
- Créez une resource Deployment avec un simple pod Nginx.
|
|
- Étendez votre playbook en utilisant le module `kubernetes.core.k8s` pour deployer nginx.
|
|
- Vérifiez que le pod est bien déployé. Pouvez-vous accéder à la page d'accueil de Nginx ?
|
|
|
|
### Tâche Bonus
|
|
|
|
Pour les plus guerriers, révisez votre playbook Ansible pour utiliser le module suivant : [gepaplexx/microk8s](https://galaxy.ansible.com/gepaplexx/microk8s)
|
|
|
|
### Rendu TP Ansible
|
|
- Un playbook pour installer un cluster microk8s
|
|
- Tâches pour deployer un pod nginx (fichier .yaml/.yml)
|