Verwenden Sie Terraform, um OpenStack-Cluster zu verwalten

WBOY
Freigeben: 2024-02-18 16:42:23
nach vorne
546 Leute haben es durchsucht

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
Nach dem Login kopieren

Als nächstes installieren Sie Terraform:

$ sudo dnf install terraform -y
Nach dem Login kopieren

Installation überprüfen:

$ terraform –version
Nach dem Login kopieren

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
Nach dem Login kopieren
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”
}
Nach dem Login kopieren
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
Nach dem Login kopieren
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"
}
Nach dem Login kopieren
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
Nach dem Login kopieren
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"
}
}
Nach dem Login kopieren
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
Nach dem Login kopieren

Für Mieter:

$ cd TenantTF

$ terraform init

$ terraform fmt
Nach dem Login kopieren

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
Nach dem Login kopieren

Für Mieter:

$ cd TenantTF

$ terraform validate

$ terraform plan
Nach dem Login kopieren

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
Nach dem Login kopieren

Für Mieter:🎜
$ cd TenantTF

$ terraform apply
Nach dem Login kopieren

接下来的步骤

之前,我写了一篇关于在树莓派上部署最小 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!

Verwandte Etiketten:
Quelle:mryunwei.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage