> **Fase 2: Test Trampa (Tema 17)** # Pregunta 1 Terraform se ha consolidado como la herramienta libre de referencia para la Infraestructura como Código (IaC). ¿Cuál de las siguientes afirmaciones describe correctamente su paradigma principal de funcionamiento? - A) Utiliza un enfoque imperativo, ejecutando comandos paso a paso mediante scripts en Bash para alcanzar el estado deseado en la infraestructura. - B) Utiliza un enfoque declarativo, donde el administrador define el estado final deseado y la herramienta determina cómo alcanzarlo automáticamente. - C) Se basa en un modelo cliente-servidor tradicional, requiriendo la instalación obligatoria de agentes de monitorización en los hipervisores. - D) Funciona exclusivamente mediante la ejecución de Playbooks escritos en formato YAML para configurar los parámetros de red y almacenamiento. ## Respuesta Esta es la B pues: - A) Si hace uso de Scrips será orquestador pero no automatizador, y una de las características es que automatiza. - B) Esta es la correcta pues la define como tal realmente, a nivel superficial y teórico. - C) Aquí describe a Puppet. - D) Este describe a Ansible. ## Corrección - **Tu respuesta: B | Correcta: B** - **Feedback**: Impecable. No solo has acertado la de Terraform (enfoque declarativo), sino que has "desnudado" las opciones falsas reconociendo a Puppet en la C y a Ansible en la D. Eso demuestra un dominio panorámico espectacular del ecosistema. # Pregunta 2 En el ecosistema de orquestación de contenedores, Kubernetes (K8s) define varias unidades lógicas para su funcionamiento. ¿Cuál es la unidad de computación más pequeña y básica que se puede desplegar y gestionar en Kubernetes? - A) El Container, que encapsula directamente el código de la aplicación y sus dependencias sin ninguna capa de abstracción adicional. - B) El Node, que representa la máquina física o virtual completa encargada de ejecutar los distintos servicios de la plataforma. - C) El Cluster, que agrupa todos los recursos disponibles para garantizar la alta disponibilidad y el balanceo de carga automático. - D) El Pod, que puede alojar uno o varios contenedores que comparten almacenamiento, red y especificaciones sobre cómo ejecutarse. ## Respuesta Aquí voy a tirar una piedra al aire con la lógica. Digo que la A por: - A) Kubernetes agrupa Docker (Contenedores) y Docker Compose (Administración de contenedores) con capacidad para crear Clústers de estos elementos. Como unidad básica tenemos al Contenedor. - B) Esto es una característica de Docker, que permite comunicar al anfitrión con el contenedor, y es lo que permite hacer uso de los recursos del anfitrión a diferencia de las Máquinas Virtuales. - C) Esto es el rescurso más bestia que puede utilizar, por tanto, este no es. - D) Estos son los recursos como los Volumnes, las Networks, etc. Sin contenedores no tiene valor de existencia si quiera. ## Corrección - **Tu respuesta: A | Correcta: D** - **Feedback**: ¡Caíste en la trampa de oro de Kubernetes! Aplicaste la lógica pura de Docker (donde el contenedor es el rey absoluto), pero Kubernetes tiene sus propias reglas. - **La realidad**: En K8s, **no puedes desplegar un contenedor suelto**. Kubernetes envuelve el contenedor (o un grupo muy estrecho de ellos) en una cápsula lógica llamada Pod. El Pod es la unidad de computación más pequeña y básica en K8s. Grábate esto a fuego: *Docker = Contenedor; Kubernetes = Pod*. A partir de hoy, esta no la fallas nunca más. # Pregunta 3 En una arquitectura de Integración y Despliegue Continuo (CI/CD) basada en software libre, si comparamos Jenkins con GitLab CI/CD, ¿cuál es una diferencia arquitectónica o de diseño fundamental entre ambos? - A) Jenkins requiere la instalación de un servidor independiente y el uso de plugins, mientras que GitLab CI/CD está integrado nativamente en el propio repositorio. - B) GitLab CI/CD es una herramienta diseñada exclusivamente para lenguajes compilados (como C++), mientras que Jenkins solo soporta lenguajes interpretados. - C) Jenkins utiliza un modelo de orquestación de contenedores nativo, haciendo innecesario el uso de Docker, a diferencia de la arquitectura de GitLab CI/CD. - D) GitLab CI/CD requiere el pago de licencias propietarias para cualquier automatización básica, mientras que Jenkins es la única opción de código abierto. ## Respuesta Voy a lanzarme a la piscina y voy a decir a ciegas que la A por: - A) Jenkins trabaja con Pluggins para pluralizar las tareas, mientras que GitLab CI/CD hace uso de instrucciones sobre un entorno YML. - B) GitLab CI/CD engloba mucho más, así que no es. - C) Esta parece la correcta pero admite un entorno de contenedor mediante docker-dind, por tanto, lo que determina que requiere sí o sí de Docker internamente. - D) Si el despliegue es local no tiene un precio inicial, GitLab CI/CD. ## Corrección - **Tu respuesta: A | Correcta: A** - **Feedback**: ¡Lanzarse a la piscina con red! Tu deducción es 100% correcta. Jenkins es el "dinosaurio" todopoderoso que vive en su propio servidor y se alimenta de miles de plugins. GitLab CI/CD es el enfoque moderno, integrado nativamente en el propio repositorio mediante archivos YAML. Lo has clavado.