偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

使用 Terraform 來管理 OpenStack 集群

運維 系統(tǒng)運維
Terraform 是一種聲明性語言,可以作為你正在建設的基礎設施的藍圖。

在擁有一個 OpenStack 生產環(huán)境和家庭實驗室一段時間后,我可以肯定地說,從管理員和租戶的角度置備工作負載和管理它是很重要的。

Terraform 是一個開源的基礎設施即代碼(IaC)軟件工具,用于 置備provisioning網(wǎng)絡、服務器、云平臺等。Terraform 是一種聲明性語言,可以作為你正在建設的基礎設施的藍圖。你可以用 Git 來管理它,它有一個強大的 ??GitOps?? 使用場景。

本文介紹了使用 Terraform 管理 OpenStack 集群的基礎知識。我使用 Terraform 重新創(chuàng)建了 OpenStack 演示項目。

安裝 Terraform

我使用 CentOS 作為跳板機運行 Terraform。根據(jù)官方文檔,第一步是添加 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 提供者創(chuàng)建一個 Terraform 腳本

在 Terraform 中,你需要一個 提供者provider,它是一個轉換器,Terraform 調用它將你的 ??.tf?? 轉換為對你正在協(xié)調的平臺的 API 調用。

有三種類型的提供者:官方、合作伙伴和社區(qū):

  • 官方提供者由 Hashicorp 維護。
  • 合作伙伴提供者由與 Hashicorp 合作的技術公司維護。
  • 社區(qū)提供者是由開源社區(qū)成員維護的。

在這個 ??鏈接??? 中有一個很好的 OpenStack 的社區(qū)提供者。要使用這個提供者,請創(chuàng)建一個 ??.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?? 變量才能工作。

創(chuàng)建一個 Terraform 管理文件

OpenStack 管理文件的重點是置備外部網(wǎng)絡、路由、用戶、鏡像、租戶配置文件和配額。

此示例提供風格,連接到外部網(wǎng)絡的路由、測試鏡像、租戶配置文件和用戶。

首先,為置備資源創(chuàng)建一個 ??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"
}

創(chuàng)建一個租戶 Terraform 文件

作為一個 租戶Tenant,你通常會創(chuàng)建虛擬機。你還為這些虛擬機創(chuàng)建網(wǎng)絡和安全組。

這個例子使用上面由 Admin 文件創(chuàng)建的用戶。

首先,創(chuàng)建一個 ??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

創(chuàng)建 Terraform 文件后,你需要初始化 Terraform。

對于管理員:

$ cd AdminTF
$ terraform init
$ terraform fmt

對于租戶:

$ cd TenantTF
$ terraform init
$ terraform fmt

命令解釋:

  • ??terraform init?? 從鏡像源下載提供者用于置備此項目。
  • ??terraform fmt?? 格式化文件,以便在倉庫中使用。

創(chuàng)建一個 Terraform 計劃

接下來,為你創(chuàng)建一個 計劃plan,看看將創(chuàng)建哪些資源。

對于管理員:

$ cd AdminTF
$ terraform validate
$ terraform plan

對于租戶:

$ cd TenantTF
$ terraform validate
$ terraform plan

命令解釋:

  • ??terraform validate??? 驗證 ??.tf?? 語法是否正確。
  • ??terraform plan?? 在緩存中創(chuàng)建一個計劃文件,所有管理的資源在創(chuàng)建和銷毀時都可以被跟蹤。

應用你的第一個 TF

要部署資源,使用 ??terraform apply?? 命令。該命令應用計劃文件中的所有資源狀態(tài)。

對于管理員:

$ cd AdminTF
$ terraform apply

對于租戶:

$ cd TenantTF
$ terraform apply

接下來的步驟

之前,我寫了一篇關于在樹莓派上部署最小 OpenStack 集群的 ??文章???。你可以找到更詳細的 ??Terraform 和 Ansible?? 配置,并通過 GitLab 實現(xiàn)一些 CI/CD。

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2018-12-19 08:00:24

Terraform開源

2020-07-08 08:03:37

KubernetesLens集群

2020-10-26 07:40:17

Terraform

2023-03-03 08:10:15

TerraformAzure虛擬機

2021-05-18 16:25:44

systemd啟動項系統(tǒng)運維

2021-01-31 10:48:24

命令Systemctl工具

2024-11-06 10:22:23

Akamai云計算虛擬專用云

2019-06-06 10:30:30

Windows管理中心Windows 10

2023-02-21 08:01:20

AWSTerraform管理

2020-01-18 18:41:13

GitGit服務器開源

2023-06-15 08:00:23

2023-11-26 00:52:12

Docker鏡像容器

2017-09-13 09:48:27

WSSSOFS集群存儲

2022-05-18 07:30:51

OperatorprometheusVM 集群

2010-06-24 12:00:21

2019-03-04 10:45:57

Linux Cockp系統(tǒng)性能命令

2010-08-06 09:05:17

2010-08-13 11:28:00

思科路由器

2025-02-24 10:07:09

Redis節(jié)點遷移集群

2019-03-31 17:28:37

Arch LinuxLinux鏡像
點贊
收藏

51CTO技術棧公眾號