Mise en œuvre d'un déploiement d'application web pratique
Appliquons ce que nous avons appris dans un scénario plus pratique : le déploiement d'une application web simple en utilisant le module get_url
d'Ansible.
Configuration du projet d'application web
Tout d'abord, créons une structure de répertoire pour notre application web :
mkdir -p ~/project/ansible-get-url/webapp/public
cd ~/project/ansible-get-url
Création du playbook de déploiement de l'application web
Maintenant, nous allons créer un playbook nommé deploy-webapp.yml
qui téléchargera les fichiers nécessaires à notre application web :
---
- name: Deploy Web Application Files
hosts: localhost
become: no
vars:
webapp_dir: ~/project/ansible-get-url/webapp
assets_base_url: https://raw.githubusercontent.com/ansible/ansible-documentation/devel/docs/docsite/rst/_static
tasks:
- name: Ensure webapp directories exist
file:
path: "{{ item }}"
state: directory
mode: "0755"
loop:
- "{{ webapp_dir }}"
- "{{ webapp_dir }}/public"
- "{{ webapp_dir }}/public/css"
- "{{ webapp_dir }}/public/images"
- name: Create index.html
copy:
dest: "{{ webapp_dir }}/public/index.html"
content: |
<!DOCTYPE html>
<html>
<head>
<title>Ansible Demo App</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class="container">
<h1>Welcome to Ansible Demo</h1>
<p>This site was deployed using Ansible's get_url module!</p>
<img src="images/ansible-logo.png" alt="Ansible Logo">
</div>
</body>
</html>
- name: Download CSS file
get_url:
url: "{{ assets_base_url }}/css/ansible.css"
dest: "{{ webapp_dir }}/public/css/style.css"
mode: "0644"
timeout: 30
retries: 3
- name: Download Ansible logo
get_url:
url: "{{ assets_base_url }}/images/ansible_logo.svg"
dest: "{{ webapp_dir }}/public/images/ansible-logo.png"
mode: "0644"
timeout: 30
retries: 3
- name: Install Python HTTP server
apt:
name: python3-http.server
state: present
become: yes
- name: Display information about running the web server
debug:
msg: |
Web application has been deployed!
To start the web server, run:
cd {{ webapp_dir }}/public && python3 -m http.server 8080
Then access it at: http://localhost:8080
Ce playbook :
- Crée la structure de répertoire nécessaire pour notre application web
- Crée un fichier index.html avec un contenu HTML de base
- Télécharge un fichier CSS et une image du logo Ansible en utilisant le module
get_url
- Installe un serveur HTTP Python
- Affiche des informations sur la façon d'exécuter le serveur web
Exécution du playbook de déploiement de l'application web
Exécutons le playbook :
ansible-playbook deploy-webapp.yml
Vous devriez voir une sortie indiquant que l'application web a été déployée avec succès.
Démarrage du serveur web
Maintenant, démarrons le serveur web pour tester notre application déployée :
cd ~/project/ansible-get-url/webapp/public
python3 -m http.server 8080 &
Le serveur web est maintenant en cours d'exécution en arrière-plan sur le port 8080. Si vous étiez dans un environnement normal avec accès au navigateur, vous pourriez accéder à l'application web à l'adresse http://localhost:8080.
Vérification des fichiers déployés
Vérifions que tous les fichiers requis ont été déployés correctement :
ls -la ~/project/ansible-get-url/webapp/public/
Vous devriez voir le fichier index.html et les répertoires que nous avons créés.
ls -la ~/project/ansible-get-url/webapp/public/css/
Cela devrait afficher le fichier CSS téléchargé.
ls -la ~/project/ansible-get-url/webapp/public/images/
Cela devrait afficher l'image du logo Ansible téléchargée.
Affichage du contenu HTML
Vérifions le contenu du fichier index.html :
cat ~/project/ansible-get-url/webapp/public/index.html
Vous devriez voir le contenu HTML que nous avons créé dans le playbook.
Arrêt du serveur web
Lorsque vous avez terminé les tests, vous pouvez arrêter le serveur web en trouvant son ID de processus et en le tuant :
pkill -f "python3 -m http.server 8080"
Félicitations ! Vous avez déployé avec succès une application web simple en utilisant le module get_url
d'Ansible pour télécharger les fichiers nécessaires.