28 preguntas y respuestas de la entrevista de Terraform en tiempo real

Aquí hay 28 preguntas y respuestas de la entrevista de Terraform en tiempo real con una lista y una explicación de los comandos importantes que se preguntan a menudo en las entrevistas.

El aumento en el uso de las tecnologías de la nube ha abierto muchas oportunidades en el mundo de DevOps. En el futuro, las tecnologías de la nube serán un tema común para las preguntas de las entrevistas, y el conocimiento básico de la nube y la infraestructura como código, las herramientas de IAC serán imprescindibles para los roles de DevOps.

Tabla de contenido

¿Qué es Terraform?

Terraformar es una de las herramientas IAC más populares que utilizan todos los ingenieros de la nube. Nos permite definir recursos tanto en la nube como en las instalaciones en archivos de configuración legibles por humanos y, por lo tanto, aprovisionar estos recursos mediante programación. La característica más notable de Terraform es que, a diferencia de la mayoría de las herramientas de IAC, no se limita a un solo proveedor de nube. Puede usar Terraform para ejecutar sus aplicaciones en múltiples plataformas en la nube simultáneamente.

En caso de que se pregunte qué tecnologías admite terraform, aquí hay una pequeña lista:

Para avanzar en su carrera como ingenieros de DevOps, arquitectos de la nube, desarrolladores o administradores, tendrá que enfrentarse a las preguntas de la entrevista de Terraform. Hemos compilado una lista de las principales preguntas de la entrevista de Terraform que deberían ayudarlo a mejorar su conocimiento de Terraform.

Preguntas y respuestas generales de la entrevista de Terraform

#1. ¿Qué entiendes por Terraform?

Terraform es una herramienta IAC de código abierto creada por HashiCorp. Se utiliza para crear, actualizar, eliminar y versionar su infraestructura en múltiples plataformas en la nube.

#2. ¿Cuáles son las razones para elegir Terraform para DevOps?

El uso de Terraform para el aprovisionamiento de la infraestructura no deja lugar a errores humanos, por lo que mejora la calidad, la coherencia y la eficiencia de la infraestructura local y en la nube. Terraform usa el lenguaje HCL, que es bastante similar a JSON y fácil de aprender y usar. A diferencia de otras herramientas de IAC que ofrecen los proveedores de la nube como Cloudformation para AWS, podemos usar Terraform con varias plataformas en la nube simultáneamente. Esto evita la necesidad de aprender múltiples herramientas IAC y mejora el alcance de la colaboración.

#3. ¿Cómo funciona Terraform?

Terraform utiliza complementos llamados proveedores de Terraform para interactuar con las API en las plataformas en la nube y aprovisionar nuestros recursos. Como usuario final, el flujo de trabajo de terraformación consta de tres pasos.

Escribir: Cree la infraestructura como código.

Plan: Vista previa de los cambios que hará Terraform antes de aplicar.

Aplicar: aprovisionar la infraestructura y aplicar los cambios.

#4. ¿Qué quiere decir con la nube Terraform?

Terraform Cloud es un entorno remoto que está optimizado para el flujo de trabajo de Terraform. Proporciona características como espacios de trabajo y bloqueo de estado, lo que permite que las personas en grandes equipos colaboren.

#5. ¿Qué entiendes por Estado en Terraform?

Como herramienta IAC, terraform debe conocer el estado actual de las configuraciones y la infraestructura bajo su administración. Terraform almacena esta información en un archivo llamado archivo de estado.

#6. ¿Cuál es el beneficio de Terraform State?

Terraform State permite a Terraform asignar recursos del mundo real a su configuración, realizar un seguimiento de los metadatos y mejorar el rendimiento al planificar cambios para infraestructuras complejas. Es un componente crítico de Terraform.

#7. ¿Qué entiendes por Terraform Backend?

El backend de Terraform es la plataforma donde se almacenan las instantáneas de estado de Terraform. De forma predeterminada, Terraform usa un backend llamado local para almacenar el estado como un archivo local en su disco. Todos los demás backends admitidos son algún tipo de servicio de almacenamiento remoto.

#8. ¿Qué es un proveedor en Terraform?

Los proveedores en Terraform son complementos que permiten que Terraform interactúe con proveedores de la nube, proveedores de SaaS y otras API. Por ejemplo, si planeamos usar Terraform para aprovisionar infraestructura en AWS, necesitaremos declarar un proveedor de AWS en nuestros archivos de configuración.

#9. ¿Quién mantiene los proveedores de Terraform?

Los proveedores se distribuyen por separado del propio Terraform. Como usuario de Terraform, cualquiera puede desarrollar sus propios proveedores. Hay algunos proveedores estándar que Hashicorp mantiene explícitamente.

#10. ¿Qué es Centinela?

Centinela es una política como una herramienta de código que se utiliza para hacer cumplir las configuraciones estándar de los recursos que implementa Terraform. Puede ser utilizado por organizaciones con fines de cumplimiento y gobernanza.

#11. ¿Qué entiendes por módulos en Terraform?

Un módulo de Terraform es un contenedor estándar para múltiples recursos que se usan juntos para aprovisionar y configurar recursos. Por ejemplo, puede crear un «módulo de VPC» para su organización que aprovisione una VPC estándar y otros recursos como subredes y puertas de enlace de Internet. Los módulos se pueden compartir públicamente a través del registro de módulos públicos y de forma privada a través del registro de módulos privados.

#12. ¿Cuál es el beneficio de usar módulos en terraform?

Los módulos de Terraform nos permiten crear una abstracción lógica en la parte superior de un conjunto de recursos. El uso de módulos nos permite mantener y reutilizar una configuración estándar para los recursos. Se pueden versionar y compartir con miembros de sus equipos para aprovisionar recursos de forma estándar.

#13. ¿Qué es el Registro de Módulo Privado?

Una característica de Terraform Cloud de registro de módulo privado nos permite compartir módulos de Terraform en toda nuestra organización.

Preguntas y respuestas de la entrevista avanzada de Terraform

#14. ¿Cómo podemos exportar datos de un módulo a otro?

Podemos exportar datos de un módulo definiendo bloques de salida en los archivos de configuración del módulo. Estos datos pueden luego transferirse como un parámetro al módulo de destino.

#13. ¿Cómo se pueden definir dependencias en Terraform?

Terraform tiene una gestión de dependencias integrada. Terraform tiene dos tipos de dependencias entre los recursos: dependencias implícitas y explícitas.

Las dependencias implícitas, como sugiere su nombre, son detectadas por Terraform automáticamente. Esto es cuando la salida de un «recurso A» se usa en el «recurso B». Terraform detecta automáticamente que el «recurso B» debe crearse solo después del «recurso A»

Las dependencias explícitas se pueden especificar en los casos en que dos recursos dependen internamente entre sí sin compartir ninguna salida. Esto se puede hacer usando el parámetro depend_on en el bloque de configuración.

#14. ¿Qué son los aprovisionadores en Terraform?

Los aprovisionadores son recursos de Terraform que se utilizan para ejecutar scripts como parte de la creación o destrucción de recursos. Hay dos tipos de aprovisionadores en Terraform:

  • local-exec: invoca un script en la máquina que ejecuta Terraform.
  • remote- exec: invoca un script en un recurso remoto después de que se crea.

Los aprovisionadores solo están destinados a usarse como último recurso en Terraform.

#15. ¿Qué es el bloque de datos externo en Terraform?

Al igual que el aprovisionador local-exec, el bloque de datos externo se puede usar para ejecutar scripts en máquinas que ejecutan Terraform. La diferencia entre un aprovisionador y el bloque de datos externo es que los scripts en el bloque de datos externo pueden devolver datos en formato JSON, mientras que los aprovisionadores no pueden devolver ninguna salida. Es importante tener en cuenta que los bloques de datos externos también están destinados a ser un último recurso y no deben usarse si existe una alternativa mejor.

#dieciséis. ¿Cómo pueden dos personas que usan la nube de Terraform crear dos conjuntos diferentes de infraestructura usando el mismo directorio de trabajo?

Mediante el uso de diferentes espacios de trabajo. Estos usuarios pueden iniciar ejecuciones de Terraform en dos espacios de trabajo separados. Cada espacio de trabajo tiene un archivo de estado propio, por lo que, siempre que los recursos no se superpongan, ambos usuarios pueden aprovisionar correctamente dos conjuntos diferentes de infraestructura utilizando el mismo código.

#17. ¿Qué sucede cuando varios ingenieros comienzan a implementar la infraestructura utilizando el mismo archivo de estado?

Terraform tiene una característica muy importante llamada «bloqueo de estado». Esta función garantiza que no se realicen cambios en el archivo de estado durante una ejecución y evita que el archivo de estado se dañe. Es importante tener en cuenta que no todos los backends de Terraform admiten la función de bloqueo de estado. Debe elegir el backend correcto si esta característica es un requisito.

#18. ¿Qué es un recurso nulo en Terraform?

Un recurso nulo de terraformación es una configuración que se ejecuta como un bloque de recursos de terraformación estándar, pero no crea ningún recurso. Esto puede sonar como un recurso extraño e inútil, pero puede ser útil en varias situaciones para solucionar las limitaciones de Terraform.

#19. ¿Cómo puede usar el mismo proveedor en Terraform con diferentes configuraciones?

Usando el argumento de alias en el bloque del proveedor.

#20. Tiene un archivo de configuración de Terraform sin recursos. ¿Qué sucede cuando ejecuta el comando de aplicación de terraformación?

Terraform destruirá todos los recursos. Comenzar una ejecución vacía con el comando de aplicación de terraformación es exactamente lo mismo que iniciar la ejecución de destrucción de terraformación.

#21. ¿Qué sucede si un recurso se creó correctamente en terraform pero falló durante el aprovisionamiento?

Este es un escenario poco probable, pero cuando esto sucede, el recurso se marca como contaminado y se puede volver a crear reiniciando la ejecución de terraformación.

#22. ¿Qué valor de la variable TF_LOG proporciona el registro MÁS detallado?

TRACE es el valor más detallado y predeterminado de la variable TF_LOG.

#23. ¿Cómo puede importar recursos existentes en Terraform Management?

Usando el comando de importación de terraformación.

#24. ¿Qué comando se puede usar para obtener una vista previa del plan de ejecución de terraformación?

El comando terraform plan genera el plan de ejecución de los cambios que Terraform realizará en la infraestructura.

#25. ¿Qué comando se puede usar para conciliar el estado de Terraform con la infraestructura del mundo real?

El comando terraform apply -refresh-only se usa para conciliar el estado de Terraform con la infraestructura real del mundo. Es la nueva alternativa al comando de actualización de terraform, que ahora está obsoleto.

#26. ¿Qué comando se puede usar para cambiar entre espacios de trabajo cuando se usa Terraform Cloud?

El comando terraform workspace select se utiliza para elegir un espacio de trabajo diferente.

#27. ¿Qué comando se usa para realizar la validación de sintaxis en los archivos de configuración de terraform?

El comando de validación de terraform se usa para verificar si una configuración es sintácticamente válida e internamente consistente.

#28. ¿Qué comando se utiliza para crear nuevos espacios de trabajo en la nube de Terraform?

El comando terraform workspace new se utiliza para crear un nuevo espacio de trabajo.

Algunos otros comandos de terraformación importantes para entrevistas técnicas.

  • terraform init: Inicializa backends remotos; Descarga proveedores y módulos remotos definidos en tu configuración.
  • terraform init -upgrade: se utiliza para actualizar los proveedores descargados existentes.
  • plan terraform: genera el plan de ejecución para la creación o actualización de la infraestructura.
  • terraform apply: crea o actualiza la infraestructura después de solicitar la confirmación del usuario.
  • terraform apply –auto-approve: crea o actualiza la infraestructura; se omite la etapa de aprobación del usuario.
  • terraform destroy: elimina la infraestructura después de solicitar la confirmación del usuario.
  • terraform destroy –auto-approve: elimina la infraestructura; se omite la etapa de aprobación del usuario.
  • terraform fmt: escanea el directorio actual en busca de archivos de configuración y los formatea de acuerdo con el estilo y formato canónicos de HCP.
  • terraform fmt –recursive: escanea el directorio actual, así como los subdirectorios en busca de archivos de configuración y los formatea de acuerdo con el estilo y formato canónicos de HCP.
  • terraform show: proporciona una salida legible por humanos de un archivo de estado o plan.

Espero que la información anterior le ayude a conseguir un trabajo en Terraform.