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