Implementierung einer praktischen Webanwendungsbereitstellung
Wenden wir das Gelernte in einem praxisnäheren Szenario an: Bereitstellung einer einfachen Webanwendung mit dem get_url
-Modul von Ansible.
Einrichten des Webanwendungsprojekts
Erstellen wir zunächst eine Verzeichnisstruktur für unsere Webanwendung:
mkdir -p ~/project/ansible-get-url/webapp/public
cd ~/project/ansible-get-url
Erstellen des Webanwendungs-Deployment-Playbooks
Nun erstellen wir ein Playbook namens deploy-webapp.yml
, das die für unsere Webanwendung benötigten Dateien herunterlädt:
---
- 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
Dieses Playbook:
- Erstellt die notwendige Verzeichnisstruktur für unsere Webanwendung
- Erstellt eine index.html-Datei mit grundlegendem HTML-Inhalt
- Lädt eine CSS-Datei und ein Ansible-Logo-Bild mit dem
get_url
-Modul herunter
- Installiert einen Python HTTP-Server
- Zeigt Informationen zur Ausführung des Webservers an
Ausführen des Webanwendungs-Deployment-Playbooks
Lassen Sie uns das Playbook ausführen:
ansible-playbook deploy-webapp.yml
Sie sollten eine Ausgabe sehen, die anzeigt, dass die Webanwendung erfolgreich bereitgestellt wurde.
Starten des Webservers
Starten wir nun den Webserver, um unsere bereitgestellte Anwendung zu testen:
cd ~/project/ansible-get-url/webapp/public
python3 -m http.server 8080 &
Der Webserver läuft jetzt im Hintergrund auf Port 8080. Wenn Sie sich in einer regulären Umgebung mit Browserzugriff befinden, könnten Sie auf die Webanwendung unter http://localhost:8080 zugreifen.
Überprüfen der bereitgestellten Dateien
Überprüfen wir, ob alle erforderlichen Dateien korrekt bereitgestellt wurden:
ls -la ~/project/ansible-get-url/webapp/public/
Sie sollten die index.html-Datei und die von uns erstellten Verzeichnisse sehen.
ls -la ~/project/ansible-get-url/webapp/public/css/
Dies sollte die heruntergeladene CSS-Datei anzeigen.
ls -la ~/project/ansible-get-url/webapp/public/images/
Dies sollte das heruntergeladene Ansible-Logo-Bild anzeigen.
Anzeigen des HTML-Inhalts
Überprüfen wir den Inhalt der index.html-Datei:
cat ~/project/ansible-get-url/webapp/public/index.html
Sie sollten den HTML-Inhalt sehen, den wir im Playbook erstellt haben.
Stoppen des Webservers
Wenn Sie mit dem Testen fertig sind, können Sie den Webserver stoppen, indem Sie seine Prozess-ID ermitteln und ihn beenden:
pkill -f "python3 -m http.server 8080"
Herzlichen Glückwunsch! Sie haben erfolgreich eine einfache Webanwendung bereitgestellt, indem Sie das get_url
-Modul von Ansible verwendet haben, um die erforderlichen Dateien herunterzuladen.