目次
Terraform のインストール
OpenStack プロバイダー用の Terraform スクリプトを作成する
Terraform 管理ファイルの作成
テナント Terraform ファイルの作成
初始化你的 Terraform
创建一个 Terraform 计划
应用你的第一个 TF
接下来的步骤
ホームページ 運用・保守 安全性 Terraform を使用して OpenStack クラスターを管理する

Terraform を使用して OpenStack クラスターを管理する

Jun 09, 2023 pm 12:20 PM
運用・保守

使用 Terraform 来管理 OpenStack 集群

OpenStack 本番環境とホーム ラボをしばらく使用した後、管理者とテナントの両方の観点からワークロードと管理をプロビジョニングすることは確実に言えると思います。とても重要です。

Terraform は、ネットワーク、サーバー、クラウド プラットフォームなどをプロビジョニングするためのオープンソースの Infrastructure as Code (IaC) ソフトウェア ツールです。 Terraform は、構築しているインフラストラクチャの青写真として機能する宣言型言語です。 Git を使用して管理できます。これには、強力な GitOps の使用シナリオがあります。

この記事では、Terraform を使用して OpenStack クラスターを管理する基本を紹介します。 Terraform を使用して OpenStack デモ プロジェクトを再作成しました。

Terraform のインストール

Terraform を実行するための出発点として CentOS を使用します。公式ドキュメントによると、最初のステップは Hashicorp リポジトリを追加することです:

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

次に、Terraform をインストールします:

$ sudo dnf install terraform -y

インストールを確認します:

$ terraform –version

バージョン番号が返された場合は、Terraform がインストールされています。

OpenStack プロバイダー用の Terraform スクリプトを作成する

Terraform では、プロバイダーが必要です。これは、Terraform が .tf 変換先と呼ぶコンバーターです。調整しているプラ​​ットフォームへの API 呼び出し。

プロバイダーには、公式、パートナー、コミュニティの 3 つのタイプがあります。

  • 公式プロバイダーは、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 ファイルの作成

テナントとして、通常は仮想マシンを作成します。これらの仮想マシンのネットワーク グループとセキュリティ グループも作成します。

この例では、上記の Admin ファイルによって作成されたユーザーを使用します。

まず、テナント関連のプロビジョニング用に TenantTF ディレクトリを作成します。

$ 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。

以上がTerraform を使用して OpenStack クラスターを管理するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Spring Cloud マイクロサービス アーキテクチャのデプロイと運用 Spring Cloud マイクロサービス アーキテクチャのデプロイと運用 Jun 23, 2023 am 08:19 AM

インターネットの急速な発展に伴い、エンタープライズレベルのアプリケーションの複雑さは日に日に増しています。この状況に対応して、マイクロサービス アーキテクチャが登場しました。そのモジュール性、独立した展開、および高い拡張性により、今日ではエンタープライズレベルのアプリケーション開発の最初の選択肢となっています。 Spring Cloud は優れたマイクロサービス アーキテクチャとして、実際のアプリケーションで大きな利点を示しています。この記事では、SpringCloud マイクロサービス アーキテクチャのデプロイと運用保守について紹介します。 1. SpringCloud マイクロサービス アーキテクチャ SpringCloud をデプロイする

10年以上運用保守の仕事をしてきましたが、まだまだ初心者だなと感じた瞬間は数知れず…。 10年以上運用保守の仕事をしてきましたが、まだまだ初心者だなと感じた瞬間は数知れず…。 Jun 09, 2023 pm 09:53 PM

昔、コンピュータサイエンスを専攻していた新卒の頃、求人サイトでたくさんの求人情報を見ていたのですが、研究開発エンジニア、運用保守エンジニア、テストエンジニア…というまぶしい技術職に戸惑いました。 、私の専門コースはまあまあで、技術的なビジョンを持っていなかったことは言うまでもなく、どの技術的な方向性を追求するかについて明確なアイデアがありませんでした。先輩に「運用保守をやれ。運用保守は毎日コードを書く必要はない。Liunx が遊べるようになればいい!開発よりずっと楽だよ!」と言われるまでは、私はその道を選びました。信じられない...私はこの業界に10年以上従事しており、多くの苦しみ、多くの責任を負い、サーバーを停止させ、部門の解雇を経験しました。今、誰かが開発より運用と保守の方が簡単だと言うなら、 、それならそうします

可観測性とは何ですか?初心者が知っておくべきことすべて 可観測性とは何ですか?初心者が知っておくべきことすべて Jun 08, 2023 pm 02:42 PM

可観測性という用語はエンジニアリング分野に由来し、近年ソフトウェア開発分野でますます普及しています。簡単に言えば、可観測性とは、外部出力に基づいてシステムの内部状態を理解する能力です。 IBM は可観測性を次のように定義しています。 一般に、可観測性とは、複雑なシステムの内部状態または状態が、その外部出力の知識に基づいて理解できる程度を指します。システムの観察可能性が高ければ高いほど、追加のテストやコーディングを必要とせずに、パフォーマンス問題の根本原因を特定するプロセスがより速く、より正確になります。クラウド コンピューティングでは、可観測性は、アプリケーション システムをより効果的に監視、トラブルシューティング、デバッグするために、分散アプリケーション システムとその運用をサポートするインフラストラクチャからのデータを集約、関連付け、分析するソフトウェア ツールと実践を指し、それによって顧客エクスペリエンスを実現します。最適化とサービスレベル契約

PG データベースの運用および保守ツールはどのような機能をカバーする必要がありますか? PG データベースの運用および保守ツールはどのような機能をカバーする必要がありますか? Jun 08, 2023 pm 06:56 PM

連休前に、PG China コミュニティと協力して、D-SMART を使用して PG データベースを運用および保守する方法についてオンライン ライブ ブロードキャストを実施したところ、金融業界のクライアントの 1 人が私の紹介を聞いて電話をかけてきました。チャットするために。彼らはデータベース Xinchuang を選択し、いくつかの国内データベースを試しましたが、最終的に TDSQL を選択する予定です。そのとき少し驚いたのは、2020年から国内データベースを選定していたのですが、TDSQLを使った後の初期体験があまり良くなかったようです。その後のやり取りの結果、彼らは TDSQL の分散データベースを使い始めたばかりで、研究開発の要件が高すぎることがわかったので、全員が TDSQL の集中型 MYSQL インスタンスを選択したことを知りました。 。データベース クラウド全体

Spring Boot アクチュエーター エンドポイントが明らかに: アプリケーションを簡単に監視 Spring Boot アクチュエーター エンドポイントが明らかに: アプリケーションを簡単に監視 Jun 09, 2023 pm 10:56 PM

1. SpringBootActuator エンドポイントの概要 1.1 Actuator エンドポイントとは SpringBootActuator は、SpringBoot アプリケーションを監視および管理するために使用されるサブプロジェクトです。アプリケーションのステータス、動作ステータス、動作インジケーターを表示するために使用できる一連の組み込みエンドポイント (エンドポイント) を提供します。アクチュエータ エンドポイントは、HTTP、JMX、またはその他の形式で外部システムに公開できるため、運用および保守担当者がアプリケーションを監視、診断、管理することが容易になります。 1.2 エンドポイントの役割と機能 Actuator エンドポイントは主に次の機能を実装するために使用されます: データベース接続、キャッシュ、

運用や保守のために golang を学ぶ必要がありますか? 運用や保守のために golang を学ぶ必要がありますか? Jul 17, 2023 pm 01:27 PM

運用保守のために Golang を学ばない理由: 1. Golang は主に、高パフォーマンスおよび同時パフォーマンス要件を持つアプリケーションの開発に使用されます; 2. 運用保守エンジニアが一般的に使用するツールとスクリプト言語は、すでに満たしていますほとんどの管理およびメンテナンス要件; 3. golang の学習には、一定のプログラミングの基礎と経験が必要; 4. 運用およびメンテナンス エンジニアの主な目標は、アプリケーションの開発ではなく、システムの安定性と高可用性を確保することです。

Tuyou Zou Yi: 中小企業をどのように運営、維持するか? Tuyou Zou Yi: 中小企業をどのように運営、維持するか? Jun 09, 2023 pm 01:56 PM

インタビューや提出を通じて、運用とメンテナンスの分野のベテランが招待され、高度な合意を形成し、業界がより良く前進することを促進することを目的として、深い洞察を提供し、意見をぶつけ合うことができます。今回は、Tuyou Games の運営保守ディレクター、Zou Yi 氏をお招きします。鄒氏は、よく冗談めかして自分のことを世界トップ 500 万企業の運営保守代表者と呼んでいますが、心の中では次のように感じていることがわかります。中小企業の運用保守構築の考え方は大企業の考え方とは異なります。違いがあります。今日はいくつか質問があり、鄒氏に中小企業向けの研究と運用を統合するまでの道のりについて語ってもらいます。規模の企業。堅実でハイレベルな「運用・保守フォーラム」の第6回が始まります!質問プレビュー Tuyou はゲーム会社ですが、ゲームの運営とメンテナンスの特徴は何だと思いますか?直面している運用上の最大の課題は何ですか?これらの課題をどのように解決しましたか?ゲームの運営・保守担当者

ドゥ・シャオマン氏とチェン・チュンリー氏:20歳の「司令官」が運用と保守、パフォーマンス、成長について語る ドゥ・シャオマン氏とチェン・チュンリー氏:20歳の「司令官」が運用と保守、パフォーマンス、成長について語る Jun 09, 2023 am 09:56 AM

インタビューや提出を通じて、運用とメンテナンスの分野のベテランが招待され、高度な合意を形成し、業界がより良く前進することを促進することを目的として、深い洞察を提供し、意見をぶつけ合うことができます。今回は、20 年のキャリアのほとんどをインターネット分野で過ごしてきた、Du Xiaoman システム運用保守部門のゼネラルマネージャー、Chen Cunli 氏をお招きします。 Baidu 運営保守部門に在籍していたとき、その優れたリーダーシップ スタイルにより、チーム メンバーからは「陳司令官」と呼ばれていました。今日は「陳司令官」を招き、彼の見解について語っていただきます。堅実でハイレベルな「運用・保守フォーラム」の第5回が始まります!質問プレビュー: あなたは非常に早く百度に入社し、その後ドゥ・シャオマンと独立しました。あなたの周りの多くの従業員があなたを長くフォローし、多くの事業運営と保守のテストを経験していると思います。誰もが非常に興味を持っていると思います。

See all articles