Ejercicios - 353.1 Herramientas de Gestión Cloud

Pregunta 1

¿Qué comando de Terraform muestra una vista previa de los cambios que se aplicarán sin ejecutarlos?

a) terraform preview b) terraform check c) terraform plan d) terraform dry-run

Respuesta

c) terraform plan

terraform plan muestra los cambios que Terraform realizará en la infraestructura sin aplicarlos realmente. Muestra recursos que se crearán (+), modificarán (~) o destruirán (-). Es una buena práctica revisarlo siempre antes de terraform apply.

Pregunta 2

¿Qué es el archivo terraform.tfstate?

a) La configuración de providers de Terraform b) El mapa entre la configuración de Terraform y los recursos reales de infraestructura c) Un log de las operaciones ejecutadas d) Un archivo de variables de entorno

Respuesta

b) El mapa entre la configuración de Terraform y los recursos reales de infraestructura

El archivo de estado (terraform.tfstate) contiene el mapeo entre los recursos definidos en la configuración HCL y los recursos reales creados en la infraestructura. Es crítico para que Terraform sepa qué existe y qué debe cambiar. Puede contener datos sensibles y debe almacenarse de forma segura.

Pregunta 3

¿Cuál es la característica principal que distingue a Ansible de otras herramientas de gestión de configuración como Puppet o Chef?

a) Ansible usa un lenguaje de programación propio b) Ansible es agentless (sin agente), se conecta por SSH c) Ansible solo funciona con servidores cloud d) Ansible requiere una base de datos central

Respuesta

b) Ansible es agentless (sin agente), se conecta por SSH

Ansible no requiere instalar agentes en los hosts gestionados. Se conecta por SSH (o WinRM para Windows) y solo necesita Python instalado en los hosts remotos. Puppet y Chef requieren agentes instalados en cada nodo.

Pregunta 4

¿Qué concepto de Terraform representa un plugin que interactúa con la API de un servicio cloud?

a) Module b) Resource c) Provider d) Data Source

Respuesta

c) Provider

Un provider es un plugin que permite a Terraform interactuar con la API de un servicio específico (AWS, Azure, GCP, libvirt, etc.). Se configura con credenciales y región, y proporciona los tipos de recursos disponibles para ese servicio.

Pregunta 5

¿Qué comando de Ansible ejecuta un playbook en modo de verificación sin aplicar cambios?

a) ansible-playbook site.yml --dry-run b) ansible-playbook site.yml --check c) ansible-playbook site.yml --verify d) ansible-playbook site.yml --test

Respuesta

b) ansible-playbook site.yml --check

La opción --check (o -C) ejecuta el playbook en modo “dry-run”, verificando qué cambios se realizarían sin aplicarlos realmente. Se puede combinar con --diff para ver las diferencias exactas que se producirían.

Pregunta 6

¿Qué es IaC (Infraestructura como Código)?

a) Un lenguaje de programación para crear software de infraestructura b) La práctica de gestionar infraestructura mediante archivos de configuración versionables y reproducibles c) Un estándar de la OCI para definir contenedores d) Un protocolo de comunicación entre herramientas cloud

Respuesta

b) La práctica de gestionar infraestructura mediante archivos de configuración versionables y reproducibles

IaC permite definir la infraestructura en archivos de texto que pueden versionarse con Git, revisarse, reutilizarse y automatizarse. Esto elimina la configuración manual, mejora la reproducibilidad y proporciona documentación viva de la infraestructura.

Pregunta 7

¿Qué comando de Terraform inicializa un directorio de trabajo descargando los providers necesarios?

a) terraform setup b) terraform init c) terraform start d) terraform configure

Respuesta

b) terraform init

terraform init es el primer comando a ejecutar en un directorio de Terraform. Descarga los providers definidos, inicializa el backend de estado y descarga los módulos referenciados. Debe ejecutarse siempre que se cambie la configuración de providers o módulos.

Pregunta 8

¿Cuál es el patrón general de los comandos de OpenStack CLI?

a) os-<recurso>-<acción> b) openstack <recurso> <acción> c) osc <acción> <recurso> d) openstack-cli <recurso> <acción>

Respuesta

b) openstack <recurso> <acción>

Los comandos de OpenStack CLI siguen el patrón openstack <recurso> <acción>, como openstack server list, openstack network create, openstack image show, etc. Es un cliente unificado que reemplazó los clientes individuales (nova, neutron, etc.).

Pregunta 9

¿Qué componente de Ansible define la lista de hosts a gestionar?

a) Playbook b) Role c) Inventory d) Handler

Respuesta

c) Inventory

El inventario (inventory) define los hosts y grupos de hosts que Ansible puede gestionar. Puede ser un archivo INI/YAML estático o generarse dinámicamente (inventario dinámico). El inventario por defecto está en /etc/ansible/hosts.

Pregunta 10

¿Qué diferencia fundamental hay entre Terraform y Ansible en su uso típico?

a) Terraform configura servidores; Ansible crea infraestructura b) Terraform provisiona infraestructura (crear VMs, redes, etc.); Ansible configura los sistemas ya creados c) Terraform es para cloud público; Ansible solo para servidores locales d) No hay diferencia, son herramientas intercambiables

Respuesta

b) Terraform provisiona infraestructura (crear VMs, redes, etc.); Ansible configura los sistemas ya creados

Terraform es principalmente para provisionar infraestructura (crear y gestionar recursos cloud como VMs, redes, balanceadores). Ansible es principalmente para configurar sistemas (instalar paquetes, copiar archivos, gestionar servicios). Son complementarias: Terraform crea la infraestructura y Ansible la configura.

Pregunta 11

¿Qué comando de Terraform importa un recurso de infraestructura existente al archivo de estado?

a) terraform add b) terraform import c) terraform state add d) terraform include

Respuesta

b) terraform import

terraform import aws_instance.web i-1234567890abcdef0 importa un recurso existente en la infraestructura al estado de Terraform. Es necesario definir primero el bloque resource en la configuración HCL. Terraform entonces asocia el recurso real con la configuración declarada.

Pregunta 12

¿Qué componente de Ansible se ejecuta cuando es notificado por un cambio en una tarea?

a) Role b) Task c) Handler d) Callback

Respuesta

c) Handler

Un handler es una tarea especial que solo se ejecuta cuando es notificada por otra tarea mediante la directiva notify. Se ejecuta una sola vez al final del play, aunque sea notificado múltiples veces. Es comúnmente usado para reiniciar servicios tras cambios de configuración.

Pregunta 13

¿Qué comando de Terraform elimina un recurso del archivo de estado sin destruirlo en la infraestructura real?

a) terraform destroy b) terraform state rm c) terraform remove d) terraform detach

Respuesta

b) terraform state rm

terraform state rm aws_instance.web elimina un recurso del archivo de estado sin afectar al recurso real en la infraestructura. Después de esto, Terraform ya no gestiona ese recurso. Es útil cuando se quiere dejar de gestionar un recurso con Terraform sin destruirlo.

Pregunta 14

¿Qué lenguaje utiliza Terraform para definir la infraestructura?

a) YAML b) JSON exclusivamente c) HCL (HashiCorp Configuration Language) d) Python

Respuesta

c) HCL (HashiCorp Configuration Language)

Terraform utiliza HCL (HashiCorp Configuration Language) como lenguaje declarativo para definir infraestructura. HCL es legible, soporta variables, módulos y funciones. Aunque Terraform también acepta JSON como formato alternativo, HCL es el formato recomendado y más utilizado.

Pregunta 15

¿Qué concepto de Terraform permite reutilizar conjuntos de recursos como bloques de construcción?

a) Provider b) Module c) Data Source d) Workspace

Respuesta

b) Module

Los módulos de Terraform son contenedores reutilizables de recursos que pueden compartirse y versionarse. Pueden ser módulos locales (subdirectorios) o remotos (Terraform Registry, Git). Se invocan con el bloque module { source = "..." } y aceptan variables de entrada.

Pregunta 16

¿Qué directiva de un playbook de Ansible permite ejecutar tareas con privilegios de root?

a) sudo: yes b) become: yes c) root: true d) privilege: escalated

Respuesta

b) become: yes

become: yes en un playbook de Ansible habilita la escalación de privilegios (por defecto usando sudo). Reemplazó a la antigua directiva sudo: yes. Se puede personalizar con become_method (sudo, su, doas) y become_user (usuario al que escalar).

Pregunta 17

¿Qué herramienta de IaC de AWS permite definir infraestructura con templates declarativos nativos?

a) Terraform b) Pulumi c) CloudFormation d) Ansible

Respuesta

c) CloudFormation

AWS CloudFormation es el servicio nativo de IaC de Amazon Web Services. Permite definir infraestructura AWS en templates declarativos (YAML o JSON). Los recursos se agrupan en “stacks” que se crean, actualizan y eliminan como una unidad.

Pregunta 18

¿Qué ventaja tiene Pulumi sobre Terraform en cuanto a la definición de infraestructura?

a) Es más rápido en la ejecución b) Permite definir infraestructura usando lenguajes de programación reales como Python, TypeScript o Go c) Soporta más proveedores cloud d) No requiere archivo de estado

Respuesta

b) Permite definir infraestructura usando lenguajes de programación reales como Python, TypeScript o Go

Pulumi permite usar lenguajes de programación completos (Python, TypeScript, Go, C#, Java) en lugar de un DSL específico como HCL. Esto permite usar lógica condicional, bucles, funciones y todo el ecosistema del lenguaje elegido para definir la infraestructura.

Pregunta 19

¿Qué comando de Ansible ejecuta un módulo ad-hoc en todos los hosts del inventario?

a) ansible-playbook all -m ping b) ansible all -m ping c) ansible --module ping all d) ansible-run all ping

Respuesta

b) ansible all -m ping

ansible all -m ping ejecuta el módulo ping en todos los hosts del inventario de forma ad-hoc (sin playbook). all se refiere a todos los hosts, -m especifica el módulo. Los comandos ad-hoc son útiles para tareas rápidas sin necesidad de crear un playbook completo.

Pregunta 20

¿Qué comando de Terraform formatea los archivos de configuración HCL para que sigan el estilo canónico?

a) terraform lint b) terraform fmt c) terraform style d) terraform format

Respuesta

b) terraform fmt

terraform fmt reformatea los archivos HCL para que sigan el estilo canónico de HashiCorp (indentación consistente, alineación de =, etc.). Es similar a gofmt para Go. Se recomienda ejecutarlo antes de commits para mantener un estilo consistente en el equipo.

Pregunta 21

Escribe el comando de Terraform para destruir toda la infraestructura gestionada.

Respuesta

terraform destroy

terraform destroy planifica y ejecuta la destrucción de todos los recursos gestionados en el archivo de estado. Solicita confirmación antes de proceder. Se puede añadir -auto-approve para omitir la confirmación interactiva. También se puede destruir un recurso específico con -target.

Pregunta 22

Escribe el comando de Terraform para listar todos los recursos gestionados en el archivo de estado.

Respuesta

terraform state list

terraform state list muestra todos los recursos que Terraform está gestionando actualmente, listando sus direcciones (como aws_instance.web, aws_vpc.main). Es útil para verificar qué recursos están bajo control de Terraform y para operaciones de mantenimiento del estado.

Pregunta 23

Escribe el comando de Ansible para ejecutar el playbook site.yml usando el archivo de inventario inventario.ini.

Respuesta

ansible-playbook -i inventario.ini site.yml

ansible-playbook ejecuta un playbook de Ansible. -i especifica el archivo de inventario con los hosts a gestionar. Si no se especifica -i, Ansible usa el inventario por defecto definido en /etc/ansible/hosts o en el archivo de configuración ansible.cfg.

Pregunta 24

Escribe el comando de OpenStack CLI para crear un servidor llamado mi-servidor con flavor m1.small e imagen ubuntu-22.04.

Respuesta

openstack server create —flavor m1.small —image ubuntu-22.04 mi-servidor

openstack server create crea una nueva instancia (servidor virtual) en OpenStack. --flavor define el tipo de instancia (CPU, RAM, disco), --image la imagen del SO a usar. Se pueden añadir opciones como --network, --key-name y --security-group.

Pregunta 25

Escribe el comando de Terraform para validar que la configuración HCL es sintácticamente correcta.

Respuesta

terraform validate

terraform validate verifica que la configuración es sintácticamente válida y coherente internamente (referencias correctas, tipos de datos válidos, etc.). Requiere que terraform init se haya ejecutado previamente. No accede a la API del proveedor ni al estado remoto.