Este é um desafio para testar seus conhecimentos de DevOps na Azure, com foco na configuração de infraestrutura, automação de tarefas e monitoramento de recursos.
Este projeto consiste em configurar um servidor na Azure, implementar um script de monitoramento, configurar uma pipeline de CI/CD e criar uma imagem Docker com as configurações do servidor.
- Linguagem: Python
- Frameworks: Ansible, Terraform
- CI/CD: GitHub Actions
- Infraestrutura: Azure
- Navegue até o diretório
terraform
:cd terraform
- Inicialize e aplique a configuração:
terraform init terraform apply cd ..
- Atualize o inventário com o IP do servidor provisionado:
[todos] <IP_DO_SERVIDOR>
- Execute o playbook:
ansible-playbook -i inventario ansible/playbook.yml
- Execute o script Python:
python3 scripts/monitoramento.py
- Configure os segredos no GitHub (AZURE_WEBAPP_PUBLISH_PROFILE).
- Faça o commit e o push das alterações no repositório GitHub.
- Construa a imagem Docker:
docker build -t monitor-app .
- Rode o container:
docker run -it monitor-app
- Execute os testes unitários:
python3 -m unittest discover -s testes
+------------------------------------------+
| Repositório |
| GitHub |
+------------------------------------------+
| ^ |
| | |
v | v
+------------------------------------------+
| Evento de Push |
| (main branch) |
+------------------------------------------+
| ^
| |
v |
+------------------------------------------+
| Job: Build |
| - Configura ambiente Python |
| - Instala dependências |
| - Executa testes unitários |
+------------------------------------------+
| ^
| |
v |
+------------------------------------------+
| Job: Docker Build |
| - Constrói imagem Docker |
| - Publica imagem no registro |
+------------------------------------------+
| ^
| |
v |
+------------------------------------------+
| Job: Deploy |
| - Faz o deploy da aplicação |
| - Usa Azure WebApps Deploy |
+------------------------------------------+
name: CI/CD Pipeline
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check out the repository
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.8'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install psutil
- name: Run unit tests
run: |
python -m unittest discover -s testes
docker_build:
needs: build
runs-on: ubuntu-latest
steps:
- name: Check out the repository
uses: actions/checkout@v2
- name: Build Docker image
run: |
docker build -t monitor-app .
- name: Push Docker image to registry
run: |
docker tag monitor-app <seu_registro_docker>/monitor-app:latest
docker push <seu_registro_docker>/monitor-app:latest
deploy:
needs: docker_build
runs-on: ubuntu-latest
steps:
- name: Deploy to Azure
uses: azure/webapps-deploy@v2
with:
app-name: 'monitor-app'
slot-name: 'production'
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
package: .
# Python
__pycache__/
*.pyc
*.pyo
*.pyd
*.env
# Terraform
.terraform/
*.tfstate
*.tfstate.*
terraform.tfvars
# Ansible
*.retry
# Docker
*.dockerignore
Dockerfile
This is a challenge by Coodesh
- Adicione o link do repositório com a sua solução no teste.
- Adicione o link da apresentação do seu projeto no README.md.
- Verifique se o README.md está bom e faça o commit final em seu repositório.
- Envie e aguarde as instruções para seguir. Sucesso e boa sorte. =)