Implementando uma Implantação Prática de Aplicativo Web
Vamos aplicar o que aprendemos em um cenário mais prático: implantando um aplicativo web simples usando o módulo get_url do Ansible.
Configurando o Projeto do Aplicativo Web
Primeiro, vamos criar uma estrutura de diretórios para nosso aplicativo web:
mkdir -p ~/project/ansible-get-url/webapp/public
cd ~/project/ansible-get-url
Criando o Playbook de Implantação do Aplicativo Web
Agora, criaremos um playbook chamado deploy-webapp.yml que fará o download dos arquivos necessários para nosso aplicativo 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
Este playbook:
- Cria a estrutura de diretórios necessária para nosso aplicativo web
- Cria um arquivo index.html com conteúdo HTML básico
- Baixa um arquivo CSS e uma imagem do logotipo do Ansible usando o módulo
get_url
- Instala um servidor HTTP Python
- Exibe informações sobre como executar o servidor web
Executando o Playbook de Implantação do Aplicativo Web
Vamos executar o playbook:
ansible-playbook deploy-webapp.yml
Você deve ver uma saída indicando que o aplicativo web foi implantado com sucesso.
Iniciando o Servidor Web
Agora, vamos iniciar o servidor web para testar nosso aplicativo implantado:
cd ~/project/ansible-get-url/webapp/public
python3 -m http.server 8080 &
O servidor web agora está sendo executado em segundo plano na porta 8080. Se você estivesse em um ambiente normal com acesso ao navegador, poderia acessar o aplicativo web em http://localhost:8080.
Verificando os Arquivos Implantados
Vamos verificar se todos os arquivos necessários foram implantados corretamente:
ls -la ~/project/ansible-get-url/webapp/public/
Você deve ver o arquivo index.html e os diretórios que criamos.
ls -la ~/project/ansible-get-url/webapp/public/css/
Isso deve mostrar o arquivo CSS baixado.
ls -la ~/project/ansible-get-url/webapp/public/images/
Isso deve mostrar a imagem do logotipo do Ansible baixada.
Visualizando o Conteúdo HTML
Vamos verificar o conteúdo do arquivo index.html:
cat ~/project/ansible-get-url/webapp/public/index.html
Você deve ver o conteúdo HTML que criamos no playbook.
Parando o Servidor Web
Quando terminar os testes, você pode parar o servidor web encontrando seu ID de processo e matando-o:
pkill -f "python3 -m http.server 8080"
Parabéns! Você implantou com sucesso um aplicativo web simples usando o módulo get_url do Ansible para baixar os arquivos necessários.