


Verwenden Sie Terraform, um OpenStack-Cluster zu verwalten
Nachdem ich eine Zeit lang über eine OpenStack-Produktionsumgebung und ein Heimlabor verfügte, kann ich definitiv sagen, dass die Bereitstellung und Verwaltung von Workloads sowohl aus Administrator- als auch aus Mandantensicht wichtig ist.
Terraform ist ein Open-Source-Infrastructure-as-Code (IaC)-Softwaretool zur Bereitstellung von Netzwerken, Servern, Cloud-Plattformen usw. Terraform ist eine deklarative Sprache, die als Blaupause für die Infrastruktur dient, die Sie aufbauen. Sie können es mit Git verwalten, das über ein leistungsstarkes GitOps-Nutzungsszenario verfügt.
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
Überprüfen Sie die Installation:
$ 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
Konvertieren Sie in die API für die Plattform, mit der Sie den Aufruf koordinieren. .tf
转换为对你正在协调的平台的 API 调用。
有三种类型的提供者:官方、合作伙伴和社区:
- 官方提供者由 Hashicorp 维护。
- 合作伙伴提供者由与 Hashicorp 合作的技术公司维护。
- 社区提供者是由开源社区成员维护的。
在这个 链接 中有一个很好的 OpenStack 的社区提供者。要使用这个提供者,请创建一个 .tf
文件,并命名为 main.tf
。
$ vi main.tf
在 main.tf
中添加以下内容:
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_USERNAME
、OS_TENANT
、OS_PASSWORD
、OS_AUTH_URL
和 OS_REGION
变量才能工作。
创建一个 Terraform 管理文件
OpenStack 管理文件的重点是置备外部网络、路由、用户、镜像、租户配置文件和配额。
此示例提供风格,连接到外部网络的路由、测试镜像、租户配置文件和用户。
首先,为置备资源创建一个 AdminTF
目录:
$ mkdir AdminTF $ cd AdminTF
在 main.tf
中,添加以下内容:
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" }
创建一个租户 Terraform 文件
作为一个 租户Tenant,你通常会创建虚拟机。你还为这些虚拟机创建网络和安全组。
这个例子使用上面由 Admin 文件创建的用户。
首先,创建一个 TenantTF
- Offizielle Anbieter werden von Hashicorp verwaltet.
- Partneranbieter werden von Technologieunternehmen gepflegt, die mit Hashicorp zusammenarbeiten.
- Community-Anbieter werden von Mitgliedern der Open-Source-Community gepflegt.
.tf
Datei und benennen Sie sie main.tf
. 🎜$ mkdir TenantTF $ cd TenantTF🎜at
main.tf
Fügen Sie den folgenden Inhalt 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" } }🎜Sie müssen
OS_USERNAME
, OS_TENANT
, OS_PASSWORD
,OS_AUTH_URL
= "background-color: rgb(231, 243, 237); padding: 0px 3px; border-radius: 4px; overflow-wrap: break-word; text-indent: 0px;">OS_REGION Variable Zur Arbeit. 🎜🎜Erstellen Sie eine Terraform-Verwaltungsdatei🎜🎜Der Schwerpunkt der OpenStack-Verwaltungsdateien liegt auf der Bereitstellung externer Netzwerke, Routen, Benutzer, Bilder, Mieterprofile und Kontingente. 🎜🎜Dieses Beispiel stellt Stile, Routen zu externen Netzwerken, Testbilder, Mieterprofile und Benutzer bereit. 🎜🎜Erstellen Sie zunächst einen AdminTF
Verzeichnis: 🎜$ cd AdminTF $ terraform init $ terraform fmt🎜at
main.tf
, fügen Sie den folgenden Inhalt hinzu: 🎜$ cd TenantTF $ terraform init $ terraform fmt🎜Erstellen Sie eine Mandanten-Terraform-Datei 🎜🎜Als Mandant würden Sie normalerweise eine virtuelle Maschine erstellen. Sie erstellen auch Netzwerk- und Sicherheitsgruppen für diese virtuellen Maschinen. 🎜🎜In diesem Beispiel wird der Benutzer verwendet, der aus der obigen Admin-Datei erstellt wurde. 🎜🎜Erstellen Sie zunächst einen
TenantTF
Verzeichnis für mandantenbezogene Bereitstellung: 🎜$ mkdir TenantTF $ cd TenantTF
在 main.tf
中,添加以下内容:
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" } }
初始化你的 Terraform
创建 Terraform 文件后,你需要初始化 Terraform。
对于管理员:
$ cd AdminTF $ terraform init $ terraform fmt
对于租户:
$ cd TenantTF $ terraform init $ terraform fmt
命令解释:
-
terraform init
从镜像源下载提供者用于置备此项目。 -
terraform fmt
格式化文件,以便在仓库中使用。
创建一个 Terraform 计划
接下来,为你创建一个 计划plan,看看将创建哪些资源。
对于管理员:
$ cd AdminTF $ terraform validate $ terraform plan
对于租户:
$ cd TenantTF $ terraform validate $ terraform plan
命令解释:
-
terraform validate
验证 .tf
语法是否正确。 -
terraform plan
在缓存中创建一个计划文件,所有管理的资源在创建和销毁时都可以被跟踪。
应用你的第一个 TF
要部署资源,使用 terraform apply
命令。该命令应用计划文件中的所有资源状态。
对于管理员:
$ cd AdminTF $ terraform apply
对于租户:
$ 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!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Mit der rasanten Entwicklung des Internets nimmt die Komplexität von Unternehmensanwendungen von Tag zu Tag zu. Als Reaktion auf diese Situation entstand die Microservice-Architektur. Aufgrund seiner Modularität, unabhängigen Bereitstellung und hohen Skalierbarkeit ist es heute die erste Wahl für die Anwendungsentwicklung auf Unternehmensebene. Als hervorragende Microservice-Architektur hat Spring Cloud in praktischen Anwendungen große Vorteile gezeigt. In diesem Artikel werden die Bereitstellung sowie der Betrieb und die Wartung der SpringCloud-Microservice-Architektur vorgestellt. 1. Stellen Sie die SpringCloud-Microservice-Architektur SpringCloud bereit

Es war einmal, als ich gerade meinen Abschluss in Informatik machte und viele Stellenausschreibungen auf Rekrutierungswebsites durchstöberte. Ich war verwirrt von den schillernden technischen Positionen: F&E-Ingenieur, Betriebs- und Wartungsingenieur, Testingenieur... Während des Studiums , meine beruflichen Studiengänge waren mittelmäßig, ganz zu schweigen davon, dass ich eine technische Vision hatte und ich keine klare Vorstellung davon hatte, welche technische Richtung ich einschlagen sollte. Bis ein älterer Student zu mir sagte: „Erledigen Sie den Betrieb und die Wartung. Sie müssen nicht jeden Tag Code schreiben, um den Betrieb und die Wartung durchzuführen. Sie müssen nur in der Lage sein, Liunx zu spielen! Das ist viel einfacher als die Entwicklung!“ Zu glauben... Ich bin seit mehr als zehn Jahren in der Branche tätig, habe viel gelitten, viel Schuld auf mich genommen, Server getötet und Abteilungsentlassungen erlebt. Wenn mir jetzt jemand sagt, dass Betrieb und Wartung einfacher sind als Entwicklung , dann werde ich es tun

Der Begriff Observability stammt ursprünglich aus dem Ingenieurwesen und erfreut sich in den letzten Jahren zunehmender Beliebtheit im Bereich der Softwareentwicklung. Einfach ausgedrückt ist Beobachtbarkeit die Fähigkeit, den internen Zustand eines Systems anhand externer Ausgaben zu verstehen. IBM definiert Beobachtbarkeit als: Im Allgemeinen bezieht sich Beobachtbarkeit auf den Grad, in dem der interne Zustand oder Zustand eines komplexen Systems basierend auf der Kenntnis seiner externen Ausgabe verstanden werden kann. Je besser das System beobachtbar ist, desto schneller und genauer kann die Ursache eines Leistungsproblems ermittelt werden, ohne dass zusätzliche Tests oder Codierung erforderlich sind. Beim Cloud Computing bezieht sich Beobachtbarkeit auch auf Softwaretools und -praktiken, die Daten von verteilten Anwendungssystemen und der Infrastruktur, die ihren Betrieb unterstützt, aggregieren, korrelieren und analysieren, um Anwendungssysteme effektiver zu überwachen, Fehler zu beheben und zu debuggen und so ein Kundenerlebnis zu erreichen Optimierung und Service Level Agreement

Vor den Feiertagen habe ich mit der PG China-Community zusammengearbeitet, um eine Online-Live-Übertragung darüber durchzuführen, wie man D-SMART für den Betrieb und die Wartung der PG-Datenbank nutzt. Es kam vor, dass einer meiner Kunden aus der Finanzbranche meiner Einführung zuhörte und vorbeikam zum Chatten. Sie entscheiden sich für die Datenbank Xinchuang und haben mehrere inländische Datenbanken ausprobiert. Schließlich werden sie sich für TDSQL entscheiden. Ich war damals ein wenig überrascht, dass sie seit 2020 inländische Datenbanken ausgewählt hatten, aber es schien, dass die ersten Erfahrungen nach der Verwendung von TDSQL nicht sehr gut waren. Später, nach der Kommunikation, erfuhr ich, dass sie gerade mit der Verwendung der verteilten Datenbank von TDSQL begonnen hatten und feststellten, dass die Forschungs- und Entwicklungsanforderungen zu hoch waren. Daher entschieden sie sich alle für die zentralisierte MYSQL-Instanz von TDSQL. Nach der Verwendung stellten sie fest, dass sie sehr einfach zu verwenden war . Die gesamte Datenbank-Cloud

1. Einführung in den SpringBootActuator-Endpunkt 1.1 Was ist der Actuator-Endpunkt? SpringBootActuator ist ein Unterprojekt zur Überwachung und Verwaltung von SpringBoot-Anwendungen. Es bietet eine Reihe integrierter Endpunkte (Endpunkte), mit denen der Status, der Betriebsstatus und die Betriebsindikatoren der Anwendung angezeigt werden können. Aktor-Endpunkte können externen Systemen über HTTP, JMX oder andere Formen zugänglich gemacht werden, um dem Betriebs- und Wartungspersonal die Überwachung, Diagnose und Verwaltung von Anwendungen zu erleichtern. 1.2 Die Rolle und Funktion des Endpunkts Der Actuator-Endpunkt wird hauptsächlich zur Implementierung der folgenden Funktionen verwendet: Bereitstellung einer Gesundheitsprüfung der Anwendung, einschließlich Datenbankverbindung, Caching,

Lernen Sie Golang nicht für Betrieb und Wartung. Die Gründe dafür sind: 1. Golang wird hauptsächlich zur Entwicklung von Anwendungen mit hohen Leistungs- und gleichzeitigen Leistungsanforderungen verwendet. 2. Die von Betriebs- und Wartungsingenieuren häufig verwendeten Tools und Skriptsprachen können bereits erfüllt werden die meisten Management- und Wartungsanforderungen; 3. Das Erlernen von Golang erfordert eine gewisse Programmiergrundlage und Erfahrung. 4. Das Hauptziel des Betriebs- und Wartungsingenieurs besteht darin, die Stabilität und hohe Verfügbarkeit des Systems sicherzustellen, nicht die Entwicklung von Anwendungen.

Durch Interviews und Einreichungen werden Veteranen im Bereich Betrieb und Wartung eingeladen, fundierte Einblicke zu geben und zusammenzuarbeiten, um einen fortgeschrittenen Konsens zu erzielen und die Branche zu einer besseren Weiterentwicklung zu bewegen. In dieser Ausgabe laden wir Zou Yi ein, den Betriebs- und Wartungsleiter von Tuyou Games, der sich oft scherzhaft als Betriebs- und Wartungsvertreter der 5 Millionen größten Unternehmen der Welt bezeichnet Die Betriebs- und Wartungskonstruktionsideen kleiner und mittlerer Unternehmen unterscheiden sich von denen großer Unternehmen. Heute haben wir ein paar Fragen und bitten Herrn Zou, uns von seiner Reise zur Integration von Forschung und Betrieb für kleine und mittlere Unternehmen zu erzählen. große Unternehmen. Dies ist die 6. Ausgabe des bodenständigen und hochkarätigen „Betriebs- und Wartungsforums“, die jetzt startet! Fragenvorschau Tuyou ist ein Spieleunternehmen. Was sind Ihrer Meinung nach die einzigartigen Merkmale des Spielebetriebs und der Wartung? Was sind für Sie die größten betrieblichen Herausforderungen? Wie haben Sie diese Herausforderungen gelöst? Spielbetriebs- und Wartungspersonal

Durch Interviews und Einreichungen werden Veteranen im Bereich Betrieb und Wartung eingeladen, fundierte Einblicke zu geben und zusammenzuarbeiten, um einen fortgeschrittenen Konsens zu erzielen und die Branche zu einer besseren Weiterentwicklung zu bewegen. In dieser Ausgabe laden wir Chen Cunli ein, den General Manager der Systembetriebs- und Wartungsabteilung von Du Xiaoman. Er hat den größten Teil seiner 20-jährigen Karriere im Internetbereich verbracht. Während seiner Zeit in der Betriebs- und Wartungsabteilung von Baidu nannten ihn seine Teammitglieder aufgrund seines hervorragenden Führungsstils „Commander Chen“. Heute laden wir „Commander Chen“ ein, über seine Ansichten zu sprechen. Dies ist die 5. Ausgabe des bodenständigen und hochkarätigen „Betriebs- und Wartungsforums“, die jetzt startet! Fragenvorschau: Sie sind sehr früh zu Baidu gekommen und haben sich später bei Du Xiaoman selbstständig gemacht interessiert.
