# Terraform overview ##### Arnaud Morin
## What is terraform? * Open Source software from hashicorp * Create, update, manage infrastructure from code * Because it's code, it can be versionned (using git for ex.) * Intent driven
## Terraform workflow ![tf](data/intro-terraform-workflow1.png "tf")
## Terraform workflow ![tf](data/intro-terraform-workflow2.png "tf")
## Terraform workflow ![tf](data/intro-terraform-workflow3.png "tf")

Infrastructure As Code


provider "openstack" {
}
resource "openstack_compute_instance_v2" "server1" {
  name 		= "server1"
  image_name 	= "Debian 11"
  flavor_name 	= "small"
  network {
    name = "public"
  }
}
                        

terraform plan


Terraform will perform the following actions:

  # openstack_compute_instance_v2.server1 will be created
  + resource "openstack_compute_instance_v2" "server1" {
      + access_ip_v4        = (known after apply)
      + access_ip_v6        = (known after apply)
      + all_metadata        = (known after apply)
      + all_tags            = (known after apply)
      + availability_zone   = (known after apply)
      + flavor_id           = (known after apply)
      + flavor_name         = "small"
      + force_delete        = false
      + id                  = (known after apply)
      + image_id            = (known after apply)
      + image_name          = "Debian 11"
      + name                = "server1"
      + power_state         = "active"
      + region              = (known after apply)
      + security_groups     = (known after apply)
      + stop_before_destroy = false

      + network {
          + access_network = false
          + fixed_ip_v4    = (known after apply)
          + fixed_ip_v6    = (known after apply)
          + floating_ip    = (known after apply)
          + mac            = (known after apply)
          + name           = "public"
          + port           = (known after apply)
          + uuid           = (known after apply)
        }
    }

Plan: 1 to add, 0 to change, 0 to destroy.

                        

terraform apply


openstack_compute_instance_v2.server1: Creating...
openstack_compute_instance_v2.server1: Still creating... [10s elapsed]
openstack_compute_instance_v2.server1: Creation complete after 20s [id=005ae25d-ce0a-425b-94e6-fb0cb27e3781]

Apply complete! Resources: 1 added, 0 changed, 1 destroyed.

                        

terraform destroy


Terraform will perform the following actions:

  # openstack_compute_instance_v2.server1 will be destroyed
  - resource "openstack_compute_instance_v2" "server1" {
      - access_ip_v4        = "193.70.24.7" -> null
      - all_metadata        = {} -> null
      - all_tags            = [] -> null
      - availability_zone   = "nova" -> null
      - flavor_id           = "93f96757-ea92-44bf-8204-da2eaf5f2aae" -> null
      - flavor_name         = "small" -> null
      - force_delete        = false -> null
      - id                  = "005ae25d-ce0a-425b-94e6-fb0cb27e3781" -> null
      - image_id            = "3a2089f1-9b9d-4dc1-970a-9dcb785c01c9" -> null
      - image_name          = "Debian 11" -> null
      - name                = "server1" -> null
      - power_state         = "active" -> null
      - security_groups     = [
          - "default",
        ] -> null
      - stop_before_destroy = false -> null
      - tags                = [] -> null

      - network {
          - access_network = false -> null
          - fixed_ip_v4    = "193.70.24.7" -> null
          - mac            = "fa:16:3e:22:2c:b6" -> null
          - name           = "public" -> null
          - uuid           = "2813f459-a20d-4e50-8193-fe3c639e1ab6" -> null
        }
    }

                        
## Documentation OpenStack https://registry.terraform.io/providers/terraform-provider-openstack/openstack/latest/docs
## Questions ?