Hauràs de crear un sistema complet que integri tots els conceptes apresos durant els 5 dies anteriors. El sistema combinarà automatització SSH, backups, Ansible, systemd i interfícies gràfiques per crear una solució professional de desplegament i monitorització.
Desenvolupar un Sistema de Desplegament i Monitorització que permeti:
projecte_final/
├── README.md # Documentació del projecte
├── config/
│ ├── servidors.conf # Configuració de servidors
│ └── aplicacio.conf # Configuració de l'aplicació
├── scripts/
│ ├── desplegador.sh # Script principal de desplegament
│ ├── monitor.sh # Script de monitorització
│ ├── backup_manager.sh # Gestor de backups
│ └── gui_manager.sh # Interfície gràfica (zenity)
├── ansible/
│ ├── inventory/
│ │ └── hosts # Inventory d'Ansible
│ ├── playbooks/
│ │ ├── deploy.yml # Desplegament de l'aplicació
│ │ ├── monitor.yml # Instal·lar servei de monitorització
│ │ └── backup.yml # Configurar backups
│ └── templates/
│ ├── app.html.j2 # Template de l'aplicació
│ └── monitor.service.j2 # Template del servei systemd
├── web/
│ ├── index.html # Aplicació web de prova
│ ├── style.css
│ └── script.js
├── systemd/
│ ├── monitor-app.service # Servei de monitorització
│ └── backup-app.timer # Timer per backups
└── logs/
└── .gitkeep
Script scripts/desplegador.sh que:
Funcionalitats:
config/servidors.confRequisits:
Exemple d'ús:
./scripts/desplegador.sh --deploy # Desplegament complet
./scripts/desplegador.sh --update # Actualització incremental
./scripts/desplegador.sh --rollback # Tornar a versió anterior
./scripts/desplegador.sh --dry-run # Veure què es farà
Fitxer de configuració config/servidors.conf:
[servidors]
web1=192.168.1.10
web2=192.168.1.11
web3=192.168.1.12
[aplicacio]
nom=MyWebApp
versio=1.0.0
port=80
directori=/var/www/myapp
[desplegament]
usuari=deploy
backup_abans=true
verificar_despres=true
Script scripts/monitor.sh i servei systemd que:
Funcionalitats:
Servei systemd:
Requisits:
Exemple d'ús:
./scripts/monitor.sh --start # Iniciar monitorització
./scripts/monitor.sh --status # Veure estat actual
./scripts/monitor.sh --report # Generar informe
./scripts/monitor.sh --dashboard # Mostrar dashboard (CLI)
Format de dades JSON (logs/monitor_YYYYMMDD.json):
{
"timestamp": "2024-01-08T16:30:00Z",
"servidors": [
{
"nom": "web1",
"ip": "192.168.1.10",
"cpu": 45,
"memoria": 68,
"disc": 72,
"nginx": "running",
"resposta_ms": 120,
"http_status": 200,
"alertes": []
}
]
}
Script scripts/backup_manager.sh que:
Funcionalitats:
Requisits:
Exemple d'ús:
./scripts/backup_manager.sh --full # Backup complet
./scripts/backup_manager.sh --incremental # Backup incremental
./scripts/backup_manager.sh --list # Llistar backups
./scripts/backup_manager.sh --restore VER # Restaurar versió
./scripts/backup_manager.sh --verify # Verificar integritat
./scripts/backup_manager.sh --cleanup # Netejar backups antics
Script scripts/gui_manager.sh amb zenity que:
Funcionalitats:
Requisits:
Pantalles principals:
ansible/playbooks/deploy.yml---
- name: Desplegar aplicació web
hosts: webservers
become: yes
vars:
app_name: "{{ lookup('ini', 'nom section=aplicacio file=../../config/aplicacio.conf') }}"
app_version: "{{ lookup('ini', 'versio section=aplicacio file=../../config/aplicacio.conf') }}"
app_dir: "{{ lookup('ini', 'directori section=aplicacio file=../../config/aplicacio.conf') }}"
tasks:
# Implementar desplegament complet
- name: Fer backup abans de desplegar
# ...
- name: Desplegar aplicació
# ...
- name: Configurar nginx
# ...
- name: Verificar desplegament
# ...
cognom_nom_projecte_bash.tar.gz
├── projecte_final/
│ └── [tots els fitxers del projecte]
└── README.md
Primer (30 min): Estructura base i configuració
Segon (30 min): Desplegador bàsic
Tercer (30 min): Monitor
Quart (30 min): Backups i GUI
#!/bin/bash
# Carregar configuració
source config/servidors.conf
# Funcions principals
validar_conectivitat() {
# Implementar
}
desplegar_aplicacio() {
# Implementar
}
verificar_desplegament() {
# Implementar
}
# Programa principal
main() {
case "$1" in
--deploy)
desplegar_aplicacio
;;
*)
mostrar_ajuda
;;
esac
}
main "$@"
jq - Processar JSONbc - Càlculs numèricsparallel - Executar tasques en paral·lelwatch - Actualitzar dashboard en temps realP: Puc usar Docker en lloc de múltiples VMs?
R: Sí, pots crear 2-3 contenidors amb SSH per simular servidors.
P: És obligatori fer tots els components?
R: Els components 1, 2 i 3 són obligatoris. La GUI (component 4) és altament recomanada però pots fer una CLI potent si prefereixes.
P: Puc treballar en parelles?
R: Consulta amb el professor. Si es permet, cal especificar clarament què ha fet cadascú.
P: Quant de temps necessito?
R: El projecte està dissenyat per 2 hores de treball intens. Amb experiència dels 5 dies anteriors, és totalment factible.
Si acabes abans o vols anar més enllà:
¡Molt d'èxit amb el projecte! 🚀