Реализация развертывания практического веб-приложения
Давайте применим то, что мы узнали, в более практическом сценарии: развертывание простого веб-приложения с использованием модуля get_url
Ansible.
Настройка проекта веб-приложения
Сначала давайте создадим структуру каталогов для нашего веб-приложения:
mkdir -p ~/project/ansible-get-url/webapp/public
cd ~/project/ansible-get-url
Создание плейбука развертывания веб-приложения
Теперь мы создадим плейбук с именем deploy-webapp.yml
, который будет загружать необходимые файлы для нашего веб-приложения:
---
- 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
Этот плейбук:
- Создает необходимую структуру каталогов для нашего веб-приложения
- Создает файл index.html с базовым HTML-содержимым
- Загружает файл CSS и изображение логотипа Ansible с помощью модуля
get_url
- Устанавливает HTTP-сервер Python
- Отображает информацию о том, как запустить веб-сервер
Запуск плейбука развертывания веб-приложения
Давайте выполним плейбук:
ansible-playbook deploy-webapp.yml
Вы должны увидеть вывод, указывающий на то, что веб-приложение было успешно развернуто.
Запуск веб-сервера
Теперь давайте запустим веб-сервер, чтобы протестировать наше развернутое приложение:
cd ~/project/ansible-get-url/webapp/public
python3 -m http.server 8080 &
Веб-сервер теперь работает в фоновом режиме на порту 8080. Если бы у вас была обычная среда с доступом к браузеру, вы могли бы получить доступ к веб-приложению по адресу http://localhost:8080.
Проверка развернутых файлов
Давайте проверим, что все необходимые файлы были развернуты правильно:
ls -la ~/project/ansible-get-url/webapp/public/
Вы должны увидеть файл index.html и каталоги, которые мы создали.
ls -la ~/project/ansible-get-url/webapp/public/css/
Здесь должен отображаться загруженный файл CSS.
ls -la ~/project/ansible-get-url/webapp/public/images/
Здесь должно отображаться загруженное изображение логотипа Ansible.
Просмотр содержимого HTML
Давайте проверим содержимое файла index.html:
cat ~/project/ansible-get-url/webapp/public/index.html
Вы должны увидеть содержимое HTML, которое мы создали в плейбуке.
Остановка веб-сервера
Когда вы закончите тестирование, вы можете остановить веб-сервер, найдя его идентификатор процесса и завершив его:
pkill -f "python3 -m http.server 8080"
Поздравляем! Вы успешно развернули простое веб-приложение, используя модуль get_url
Ansible для загрузки необходимых файлов.