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









* 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"


* 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


* 5. Ejecutar el comando terraform plan (Mostrar el log en consola )


* 6. Ejecutar el comando terraform apply (Mostrar el log en consola y mostrar los recursos creados en la interfaz que de da el proveedor)


* 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”




* 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:

Para importar los recursos se realiza de la siguiente forma:

* 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”.

* 10. Destruya la infraestructura original con el comando de terraform.

