---
# System prepended metadata

title: Untitled

---

## 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)
