Heim  >  Artikel  >  Computer-Tutorials  >  Verwenden Sie Terraform, um OpenStack-Cluster zu verwalten

Verwenden Sie Terraform, um OpenStack-Cluster zu verwalten

WBOY
WBOYnach vorne
2024-02-18 16:42:23535Durchsuche

Verwenden Sie Terraform, um OpenStack-Cluster zu verwalten

Terraform ist eine deklarative Sprache, die als Blaupause für die Infrastruktur dient, die Sie aufbauen.

Nachdem ich eine Zeit lang über eine OpenStack-Produktionsumgebung und ein Heimlabor verfügte, wurde mir klar, wie wichtig die Bereitstellung und Verwaltung von Workloads sowohl aus Administrator- als auch aus Mandantensicht ist.

Terraform ist ein Open-Source-Softwaretool zum Verwalten von Infrastruktur als Code und zum Erstellen von Infrastrukturplänen über eine deklarative Sprache. Es unterstützt Git-Management und ist für GitOps geeignet.

In diesem Artikel werden die Grundlagen der Verwendung von Terraform zur Verwaltung von OpenStack-Clustern vorgestellt. Ich habe das OpenStack-Demoprojekt mit Terraform neu erstellt.

Terraform installieren

Ich verwende CentOS als Sprungbrett, um Terraform auszuführen. Der offiziellen Dokumentation zufolge besteht der erste Schritt darin, das Hashicorp-Repository hinzuzufügen:

$ sudo dnf config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo

Als nächstes installieren Sie Terraform:

$ sudo dnf install terraform -y

Installation überprüfen:

$ terraform –version

Wenn Sie die zurückgegebene Versionsnummer sehen, dann haben Sie Terraform installiert.

Erstellen Sie ein Terraform-Skript für den OpenStack-Anbieter

In Terraform benötigen Sie einen Anbieter, bei dem es sich um einen Konverter handelt, den Terraform aufruft, um Ihre .tf in einen API-Aufruf an die Plattform umzuwandeln, die Sie orchestrieren.

Es gibt drei Arten von Anbietern: offiziell, Partner und Community:

  • Offizieller Anbieter, verwaltet von Hashicorp.
  • Partneranbieter werden von Technologieunternehmen gepflegt, die mit Hashicorp zusammenarbeiten.
  • Community-Anbieter werden von Open-Source-Community-Mitgliedern gepflegt.

Unter diesem Link gibt es einen guten Community-Anbieter von OpenStack. Um diesen Anbieter zu verwenden, erstellen Sie eine .tf文件,并命名为main.tf-Datei und benennen Sie sie

.

$ vi main.tf
main.tfFügen Sie Folgendes zu

hinzu:

terraform {
required_version = ">= 0.14.0"
required_providers {
openstack = {
source= "terraform-provider-openstack/openstack"
version = "1.49.0"
}
}
}

provider "openstack" {
user_name = “OS_USERNAME”
tenant_name = “OS_TENANT”
password= “OS_PASSWORD”
auth_url= “OS_AUTH_URL”
region= “OS_REGION”
}
OS_USERNAMEOS_TENANTOS_PASSWORDOS_AUTH_URLOS_REGIONSie müssen die

Variablen ändern, damit dies funktioniert.

Erstellen Sie eine Terraform-Verwaltungsdatei

OpenStack-Verwaltungsdateien konzentrieren sich auf die Bereitstellung externer Netzwerke, Routing, Benutzer, Bilder, Mieterprofile und Kontingente.

Dieses Beispiel stellt Stile, Routen zu externen Netzwerken, Testbilder, Mieterprofile und Benutzer bereit.

AdminTFErstellen Sie zunächst ein

Verzeichnis für die Bereitstellung von Ressourcen:

$ mkdir AdminTF

$ cd AdminTF
main.tfFügen Sie in

Folgendes hinzu:

terraform {
required_version = ">= 0.14.0"
required_providers {
openstack = {
source= "terraform-provider-openstack/openstack"
version = "1.49.0"
}
}
}

provider "openstack" {
user_name = “OS_USERNAME”
tenant_name = “admin”
password= “OS_PASSWORD”
auth_url= “OS_AUTH_URL”
region= “OS_REGION”
}

resource "openstack_compute_flavor_v2" "small-flavor" {
name= "small"
ram = "4096"
vcpus = "1"
disk= "0"
flavor_id = "1"
is_public = "true"
}

resource "openstack_compute_flavor_v2" "medium-flavor" {
name= "medium"
ram = "8192"
vcpus = "2"
disk= "0"
flavor_id = "2"
is_public = "true"
}

resource "openstack_compute_flavor_v2" "large-flavor" {
name= "large"
ram = "16384"
vcpus = "4"
disk= "0"
flavor_id = "3"
is_public = "true"
}

resource "openstack_compute_flavor_v2" "xlarge-flavor" {
name= "xlarge"
ram = "32768"
vcpus = "8"
disk= "0"
flavor_id = "4"
is_public = "true"
}

resource "openstack_networking_network_v2" "external-network" {
name = "external-network"
admin_state_up = "true"
external = "true"
segments {
network_type = "flat"
physical_network = "physnet1"
}
}

resource "openstack_networking_subnet_v2" "external-subnet" {
name= "external-subnet"
network_id= openstack_networking_network_v2.external-network.id
cidr= "10.0.0.0/8"
gateway_ip= "10.0.0.1"
dns_nameservers = ["10.0.0.254", "10.0.0.253"]
allocation_pool {
start = "10.0.0.1"
end = "10.0.254.254"
}
}

resource "openstack_networking_router_v2" "external-router" {
name= "external-router"
admin_state_up= true
external_network_id = openstack_networking_network_v2.external-network.id
}

resource "openstack_images_image_v2" "cirros" {
name = "cirros"
image_source_url = "https://download.cirros-cloud.net/0.6.1/cirros-0.6.1-x86_64-disk.img"
container_format = "bare"
disk_format= "qcow2"

properties = {
key = "value"
}
}

resource "openstack_identity_project_v3" "demo-project" {
name = "Demo"
}

resource "openstack_identity_user_v3" "demo-user" {
name = "demo-user"
default_project_id = openstack_identity_project_v3.demo-project.id
password = "demo"
}
Erstellen Sie eine Mandanten-Terraform-Datei

Als Mieter erstellen Sie normalerweise virtuelle Maschinen. Sie erstellen auch Netzwerk- und Sicherheitsgruppen für diese virtuellen Maschinen.

In diesem Beispiel wird der von der obigen Admin-Datei erstellte Benutzer verwendet.

TenantTFErstellen Sie zunächst ein

Verzeichnis für die mandantenbezogene Bereitstellung:

$ mkdir TenantTF
$ cd TenantTF
main.tfFügen Sie in

Folgendes hinzu:

terraform {
required_version = ">= 0.14.0"
required_providers {
openstack = {
source= "terraform-provider-openstack/openstack"
version = "1.49.0"
}
}
}

provider "openstack" {
user_name = “demo-user”
tenant_name = “demo”
password= “demo”
auth_url= “OS_AUTH_URL”
region= “OS_REGION”
}

resource "openstack_compute_keypair_v2" "demo-keypair" {
name = "demo-key"
public_key = "ssh-rsa ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"
}


resource "openstack_networking_network_v2" "demo-network" {
name = "demo-network"
admin_state_up = "true"
}

resource "openstack_networking_subnet_v2" "demo-subnet" {
network_id = openstack_networking_network_v2.demo-network.id
name = "demo-subnet"
cidr = "192.168.26.0/24"
}

resource "openstack_networking_router_interface_v2" "demo-router-interface" {
router_id = “XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX”
subnet_id = openstack_networking_subnet_v2.demo-subnet.id
}

resource "openstack_compute_instance_v2" "demo-instance" {
name= "demo"
image_id= "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"
flavor_id = "3"
key_pair= "demo-key"
security_groups = ["default"]

metadata = {
this = "that"
}

network {
name = "demo-network"
}
}
Initialisieren Sie Ihr Terraform

Nachdem Sie die Terraform-Datei erstellt haben, müssen Sie Terraform initialisieren.

Für Administratoren:

$ cd AdminTF

$ terraform init

$ terraform fmt

Für Mieter:

$ cd TenantTF

$ terraform init

$ terraform fmt

Befehlserklärung:
  • terraform init
  • Laden Sie den Anbieter von der Spiegelquelle herunter, um dieses Projekt bereitzustellen.
  • terraform fmt
  • Formatieren Sie die Datei zur Verwendung im Repository.

Erstellen Sie einen Terraform-Plan

Als nächstes erstellen Sie einen Plan, damit Sie sehen können, welche Ressourcen erstellt werden.

Für Administratoren:

$ cd AdminTF

$ terraform validate

$ terraform plan

Für Mieter:

$ cd TenantTF

$ terraform validate

$ terraform plan

Befehlserklärung:
  • terraform validate验证.tfterraform validieren Überprüfen
  • ob die Syntax korrekt ist.
  • terraform plan
  • Erstellen Sie eine Plandatei im Cache und alle verwalteten Ressourcen können beim Erstellen und Vernichten verfolgt werden.

Wenden Sie Ihren ersten TF an

terraform applyUm Ressourcen bereitzustellen, verwenden Sie den Befehl

. Dieser Befehl wendet alle Ressourcenstatus in der Plandatei an.

Für Administratoren:

$ cd AdminTF

$ terraform apply

Für Mieter:🎜
$ cd TenantTF

$ terraform apply

接下来的步骤

之前,我写了一篇关于在树莓派上部署最小 OpenStack 集群的 文章。你可以找到更详细的Terraform 和 Ansible配置,并通过 GitLab 实现一些 CI/CD。

Das obige ist der detaillierte Inhalt vonVerwenden Sie Terraform, um OpenStack-Cluster zu verwalten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:mryunwei.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vorheriger Artikel:Handbuch zum Linux-Exec-BefehlNächster Artikel:Handbuch zum Linux-Exec-Befehl