1. Hem
  2. Publikt moln
  3. Guider
  4. Hantera OpenStack resurser med Terraform

Hantera OpenStack resurser med Terraform

Terraform är ett verktyg för att bygga, ändra och versionshantera infrastruktur på ett säkert och effektivt sätt. Terraform stödjer hantering av olika tjänsteleverantörer med hjälp av leverantörstillägg. OpenStack-tillägget används för att interagera med de många resurser som stödjs av OpenStack. Tillägget måste konfigureras med rätt autentiseringsuppgifter innan den kan användas.

Installera Terraform

Den senaste versionen av Terraform CLI kan installeras genom att följa den officiella installationsguiden.

Konfigurera OpenStack-tillägget

  1. Skapa en katalog och en tom fil som slutar på .tf i den mappen, i vårt exempel heter både katalogen och filen demo.
  2. Konfigurera terraform med OpenStack-tilläggets namn och version.
terraform {
   required_providers {
     openstack = {
       source = "terraform-provider-openstack/openstack"
       version = "1.40.0"
     }
   }
 }

3. För att interagera med och hantera OpenStack krävs en openrc-fil och den kan tillhandahållas på två sätt:

a. Exportera openrc-variabler i miljön.
i. Gå till Project -> API Access sektionen i Horizon.
ii. Clicka på ”Ladda ned OpenStack RC Fil”

b. Konfigurera openstack i tf-filer. Se den här länken för fler konfigurationsparametrar.

Configure the OpenStack Provider
 provider "openstack" {
  user_name     = "demo-user"
  tenant_name   = "demo-project"
  password      = "demopass"
  auth_url      = "https://auth.binero.cloud:5000/v3"
  region        = "europe-se-1"
  endpoint_type = "public"
 }

4. När du är klar kör du kommandot terraform init. Efter installationen kommer terraform-provider-openstack att installeras.

Skapa OpenStack Resurser

Terraform stödjer två typer av konstruktioner när den interagerar med OpenStack:
1. Resurser – Resurs att hantera i OpenStack.
Exempel – Detta hanterar en router-resurs i OpenStack.

resource "openstack_networking_router_v2" "demorouter" {
   name                = "demorouter"
   admin_state_up      = true
   external_network_id = "35164b56-13a1-4b06-b0e7-94c9a67fef7e"
 }

2. Datakällor – Detaljer om befintliga resurser och som ska användas i resurshantering.
Exempel – Att använda en datakälla för att få en lista över compute-tillgänglighetszoner från OpenStack.

data "openstack_compute_availability_zones_v2" "zones" {}

Detaljer om konstruktioner som stöds av resurser och datakällor finns i den officiella terraform OpenStack-leverantörsdokumentation. Ett exempel på att hantera en virtuell maskin med hjälp av terraform beskrivs nedan.

Hantera en virtuell server med Terraform

Använd demo.tf från tidigare och lägg till innehållet nedan. Mallen skapar en virtuell server baserad på CentOS 8 med typ gp.1×2.

data "openstack_compute_flavor_v2" "demoflavor" {
   name = "gp.1x2"
 }
 data "openstack_images_image_v2" "centos8" {
   name = "centos-8-x86_64"
 }
 resource "openstack_compute_instance_v2" "demo" {
   name            = "demo"
   image_id        = data.openstack_images_image_v2.centos8.id
   flavor_id       = data.openstack_compute_flavor_v2.demoflavor.id
   key_pair        = "user-key"
   security_groups = ["default"]
 metadata = {
     this = "that"
   }
 network {
     name = "europe-se-1-1a-net0"
   }
 }

2. För att skapa resursen, kör kommandot terraform apply

Säkerhetsgruppen relaterad till instansen ser ut så här

För att uppdaterat det så kan vi uppdatera demo.tf och ändra från security_groups = ["default"] till security_groups = ["all-open"] för att applicera all-open säkerhetsgruppen istället för default, för att uppdatera detta så kör vi terraform apply igen och efter det behöver vi bekräfta ändringen i Horizon med ”Confirm Resize” på den virtuella maskinen.

Säkerhetsgrupperna efter uppdateringen

För att radera resurserna så kör vi terraform destroy

Senast uppdaterad 2021-05-06

Relaterade artiklar

Behöver du hjälp?
Hittar du inte vad du söker? Ingen fara - kontakta oss så hjälper vi dig!
Kontakta support