Resumen
En este laboratorio se trabaja el despliegue de infraestructura con Terraform en clouds diferentes. Se practicará creando infraestuctura en Google Storage. Posteriormente, se preparará una máquina virtual con MySQL en OpenStack y dos máquinas virtuales más con Docker también en OpenStack para el despliegue de una API y una aplicación, respectivamente.
-
Trabajar con varios providers Terraform
-
Automatizar la creación e inicialización de infraestructura cloud
-
Organizar el código Terraform en módulos
1. Recursos
Puedes aprender a usar Terraform siguiendo el Tutorial Despliegue de infraestructura cloud con Terraform.
2. Actividades
Se trata de realizar el siguiente despligue automatizado con Terraform:
-
En Google Storage:
-
Crear un bucket inicializado con dos imágenes. Las imágenes serán públicas y se podrá acceder a ellas simplemente con su URL.
-
-
En OpenStack:
-
Crear una máquina virtual inicializada con MySQL
-
Crear una máquina virtual inicializada con Docker. En la inicialización también se desplegará un contenedor que ofrece una API sobre un catálogo de libros. Ofrece operaciones CRUD y ofrece la documentación en Swagger en
url/docs
para poder interactuar con la API. La API interactúa con la base de datos MySQL anterior. -
Crear una máquina virtual inicializada con Docker. En la inicialización también se desplegará un contenedor que ofrece una aplicación que muestra un catálogo de libros. Recupera los datos de los libros de la API anterior y la imagen de la portada del bucket creado en Google Storage.
-
La aplicación tiene este aspecto.
Se deber tener a mano la clave JSON de Cuenta de servicio del proyecto Google Cloud (más información). |
Tomar como base el código de la carpeta Mixto
del repositorio de ejemplos Terraform de este laboratorio siguiendo estos pasos para configurar el ejercicio. Contiene:
-
Organización de la configuración en dos módulos (
Google-Storage
yOpenStack
). Los módulos están dentro de una carpetamodules
para una mejor organización. Cada módulo configura infraestructura en el proveedor cloud correspondiente. Cada módulo contiene:-
Un archivo
providers.tf
(configuración del proveedor cloud). -
Un archivo
variables.tf
(configuración de variables) -
Un archivo
main.tf
(configuración de los recursos del despliegue). -
El módulo
OpenStack
además tiene el archivoversions.tf
para adaptar a la versión 0.13 de Terraform.
-
-
Archivo
main.tf
con la llamada a los dos módulos anteriores. -
Archivo
gcp-identity.json
cuyo contenido debe ser reemplazado por la clave JSON de una Cuenta de servicio del proyecto Google Cloud. Mantener el nombre del archivogcp-identity.json
. -
Archivo
install_mysql.sh
que instala un servidor MySQL en Ubuntu. El script inicializa una base de datos denominadaSG
de artículos deportivos, configura el acceso desde cualquier dirección IP y configura la clave deroot
amy_password
. -
Archivo de plantilla
setup-api-docker.tpl
que instala Docker y lanza un contenedor con la API de la aplicación. En la plantilla hay que configurar la ejecución de un contenedor que propociona una API sobre los productos del catálogo de la base de datos. -
Archivo de plantilla
setup-app-docker.tpl
que instala Docker y lanza un contenedor con la aplicación. En la plantilla hay que configurar la ejecución de un contenedor que propociona la aplicación del catálogo de productos interactuando con la API.
2.1. Creación e inicialización del bucket en Google Storage
-
Cambiar el contenido del archivo
gcp-identity.json
con el contenido del archivo JSON de clave de la cuenta de servicio del proyecto en Google Cloud. -
En
modules/Google-Storage
modificar:-
provider.tf
para configurar Google Cloud como provider -
variables.tf
con las variables indicadas -
main.tf
siguiendo las instrucciones de los recursos a crear.
-
2.2. Creación e inicialización de las máquinas virtuales en OpenStack
-
En
modules/OpenStack
modificar:-
los arhivos de plantilla siguiendo las instrucciones indicadas en
YOUR CODE HERE
. -
provider.tf
para configurar OpenStack como provider -
variables.tf
con las variables indicadas -
main.tf
siguiendo las instrucciones de los recursos a crear.
-
Se recomienda partir de un proyecto nuevo propio e ir añadiendo paulatinamente fragmentos del código del repositorio de base e ir construyéndolo poco a poco:
|