Practitioner:
- Crear Personal Access Token (PAT) en GitHub
- Dar de alta PAT de GitHub en Jenkins
- Generar credenciales de usuario en AWS
- Dar de alta credenciales de AWS en Jenkins
Proficiency:
- Dar de alta organización en SonarCloud
- Crear Personal Access Token en SonarCloud
- Configurar PAT de SonarCloud en Jenkins
- Configurar webhook de SonarCloud apuntando a Jenkins
Crear un bucket S3 desde Terraform con flujo GitOps
Características del bucket:
- Nombre del bucket: "mapfre-gitops-" (ejempo: mapfre-gitops-pedroamador).
- Tipo de bucket: sitio WEB, con "index.html" como documento por defecto.
- Visibilidad: acceso público de lectura.
Flujo de entrega:
- El backend de Terraform será de tipo "local" en el Jenkins, en la ruta /opt/buckets/, por ejemplo "/opt/buckets/pedroamador"
- Se hará "terraform plan" todas las ramas, excepto rama "main"
- Se aplicará terraform únicamente con la rama "main"
Pipeline:
- Incluir archivo Jenkinsfile en el directorio raíz del repositorio
- Configurar Job de Jenkins como "Pipeline Multibranch"
- Configurar Webhook en el repositorio de GitHub apuntando a "jenkins.cicd.kevops.academy"
- Configurar credenciales de AWS como secretos y usarlas:
- Como variables de entorno, o bien
- Como variables definidas en "variables.tf" y sobreescritas en el archivo "terraform.tfvars"
Proficiency:
- Hacer commits con formato "conventional commit"
- Hacer un changelog basado en los mensajes de commit
- Etiquetar el repositorio (tag) con versiones semánticas tipo MAYOR.MINOR.PATCH
- Incluir stage de Sonar en el pipeline:
- Dar de alta proyecto SonarCloud
- Crear Personal Access Token en SonarCloud
- Configurar PAT de SonarCloud en Jenkins
- Configurar webhook de SonarCloud apuntando a Jenkins
- Usar ramas de características (feature branches) e integrar código mediante Pull Requests a la rama "main"
- Configurar el plan de Terraform en un módulo con parámetros para las credenciales de AWS y el nombre del bucket (que debe comenzar por "mapfre-gitops-*")
Otros:
Se debe tener precaución para no incluir en el repositorio información sensible, como credenciales de AWS. Éstas deben utilizarse en el flujo de entrega como secretos de Jenkins
Provisionar un bucket S3 desde Ansible con flujo GitOps
Tarea de Ansible: - Copiar archivo estático "index.html" en el bucket provisionado en el repositorio de infraestructura - El archivo estático debe contener "Hello, World! (v1.0.0)" o similar (contenido libre)
Flujo de entrega:
- Se hará test del playbook con "ansible-playbook .yml --check" en un stage de pruebas para todas las ramas
- Se aplicará el playbook exclusivamente en la rama "main"
Pipeline:
- Incluir archivo Jenkinsfile en el directorio raíz del repositorio
- Configurar Job de Jenkins como "Pipeline Multibranch"
- Configurar Webhook en el repositorio de GitHub apuntando a "jenkins.cicd.kevops.academy"
- Configurar credenciales de AWS como secretos y usarlas como variables de entorno
Proficiency:
- Hacer commits con formato "conventional commit"
- Hacer un changelog basado en los mensajes de commit
- Etiquetar el repositorio (tag) con versiones semánticas tipo MAYOR.MINOR.PATCH
- Incluir stage de Sonar en el pipeline:
- Dar de alta proyecto SonarCloud
- Crear Personal Access Token en SonarCloud
- Configurar PAT de SonarCloud en Jenkins
- Configurar webhook de SonarCloud apuntando a Jenkins
- Usar ramas de características (feature branches) e integrar código mediante Pull Requests a la rama "main"
- Usar un template "jinja2" y un archivo "version.txt" para que el contenido del HTML "Hello, World! (vX.Y.Z)" sea dinámico.
Otros:
- Se debe tener precaución para no incluir en el repositorio información sensible, como credenciales de AWS. Éstas deben utilizarse en el flujo de entrega como secretos de Jenkins
- Git:
- Jenkins:
- Use credentials in environment variables- Terraform:
- Bucket S3
- S3 ACL
- S3 Website
- Local Backend
- AWS Credentials in Environment Variables
- Ansible:
- URL de SonarCloud
- Recursos del path formativo:
Para poder evaluar el reto se necesita adjuntar a esta tarea:
- URL de los repositorios de Git generados
- URL de los jobs de Jenkins ejecutados
- URL del bucket de S3