## Practica 4 ### Grupo D | Carnet | Nombre | | -------- | -------- | 201709426 | Eli Samuel Mazariegos Ramirez | 201700327 | Marco Antonio López Grajeda | 201504290 | Bryan Eduardo Chacón López ## Pruebas de Funcionalidad * 1. Configurar una cuenta con algún proveedor de la nube (Mostrar el nombre del proyecto, generación de credenciales y keys) Veremos como configurar el servicio de google cloud, creando las credenciales de la api y luego se debera crear una cuenta de servicio ![](https://i.imgur.com/Kh1EEC1.png) ![](https://i.imgur.com/hH67Gti.png) ![](https://i.imgur.com/MBWaAPf.png) ![](https://i.imgur.com/wGIDdse.png) ![](https://i.imgur.com/GovqykN.png) ![](https://i.imgur.com/57RK8BJ.png) ![](https://i.imgur.com/Ko8QClE.png) ![](https://i.imgur.com/zp3rHGa.png) ![](https://i.imgur.com/eIxNDF5.png) * 2. Instalar Terraform (Mostrar en consola la versión instalada) Una vez todo este configurado se debe instalar linux con el comando "choco install terraform" ![](https://i.imgur.com/wqgFYJM.png) ![](https://i.imgur.com/Yy7tOLa.png) * 3. Escribir el archivo de configuración (extensión .tf) Se esscriben la configuración báisca en el archivo tf ``` terraform { required_providers { google = { source = "hashicorp/google" } } } provider "google" { credentials = file("arcane-bit-328419-915e0acca285.json") project = "arcane-bit-328419" region = "us-central1" zone = "us-central1-a" } resource "google_compute_instance" "default" { name = "practica4-gd" machine_type = "e2-medium" zone = "us-central1-a" boot_disk { initialize_params { image = "ubuntu-os-cloud/ubuntu-1804-lts" } } metadata_startup_script = "sudo apt-get update;sudo apt-get install npm;" network_interface { network = "default" access_config { } } metadata = { ssh-keys = "eli:${file("./clave.pub")}" } tags = ["practica4gd-firewall","http-server","https-server"] } resource "google_compute_firewall" "default" { name = "practica4gd-firewall" network = "default" allow { protocol = "tcp" ports = ["3000"] } source_tags = ["practica4gd-firewall"] source_ranges = ["0.0.0.0/0"] #target_tags = ["practica4gd-firewall"] } output "finalizado" { value = "IP: ${google_compute_instance.default.network_interface.0.access_config.0.nat_ip}" } ``` * 4. Inicializar proveedor de Terraform (Mostrar el log en consola ) Para iniciar terraform se utiliza "terraform init" lo cual comenzará con la carga del servicio ![](https://i.imgur.com/nWmtHhl.png) ![](https://i.imgur.com/4G80R8t.png) * 5. Ejecutar el comando terraform plan (Mostrar el log en consola ) ![](https://i.imgur.com/PNrwhJc.png) ![](https://i.imgur.com/wlh7820.png) * 6. Ejecutar el comando terraform apply (Mostrar el log en consola y mostrar los recursos creados en la interfaz que de da el proveedor) ![](https://i.imgur.com/jA3OLL0.png) ![](https://i.imgur.com/0uRsMIP.png) * 7. Debe de poder ingresar a la máquina virtual desde su computadora: a. Mostrar el prompt de su ordenador y luego cuando esté dentro de la máquina configurar el mensaje del servidor: “Software Avanzado - Modificado - Práctica 4 - #Grupo” ![](https://i.imgur.com/CzAur6k.png) ![](https://i.imgur.com/QyLYjcN.png) ![](https://i.imgur.com/iWRyYOM.png) ![](https://i.imgur.com/6A37tv6.png) * 8. A partir de la infraestructura existente y de la cual deberá de importar por lo menos dos recursos (quedan a su discreción la selección de los recursos). Si se eliminan los archivos del stage de terraform en el directorio actual y se reinicia el proceso de correr el comando "terraform init" seguido de "terraform apply", se presentaran errores, ya que la infraestructura existente no es reconocida por terraform y se deberan de proceder a importar los recursos en cuestion, como se presenta a continuación: ![](https://i.imgur.com/6EzS4rX.png) Para importar los recursos se realiza de la siguiente forma: ![](https://i.imgur.com/uJDaotp.png) * 9. Luego de tener toda configuración del proveedor y los recursos importados, se debe de duplicar los recursos (deben de permanecer los recursos de la infraestructura original) y ejecutar el ciclo de vida de Terraform para los nuevos recursos. Para los nuevos recursos solo debe de variar el final del nombre de los mismos agregando “_copy”. ![](https://i.imgur.com/XYezSIL.png) * 10. Destruya la infraestructura original con el comando de terraform. ![](https://i.imgur.com/IXccWCY.png) ![](https://i.imgur.com/65OtBqA.png)