自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用 Terraform 來管理 OpenStack 集群

運(yùn)維 系統(tǒng)運(yùn)維
Terraform 是一種聲明性語言,可以作為你正在建設(shè)的基礎(chǔ)設(shè)施的藍(lán)圖。

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

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

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

安裝 Terraform

我使用 CentOS 作為跳板機(jī)運(yùn)行 Terraform。根據(jù)官方文檔,第一步是添加 Hashicorp 倉庫:

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

接下來,安裝 Terraform:

$ sudo dnf install terraform -y

驗(yàn)證安裝:

$ terraform –version

如果你看到返回的版本號,那么你已經(jīng)安裝了 Terraform。

為 OpenStack 提供者創(chuàng)建一個(gè) Terraform 腳本

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

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

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

在這個(gè) ??鏈接??? 中有一個(gè)很好的 OpenStack 的社區(qū)提供者。要使用這個(gè)提供者,請創(chuàng)建一個(gè) ??.tf??? 文件,并命名為 ??main.tf??。

$ vi main.tf

在 ??main.tf?? 中添加以下內(nèi)容:

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)建一個(gè) Terraform 管理文件

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

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

首先,為置備資源創(chuàng)建一個(gè) ??AdminTF?? 目錄:

$ mkdir AdminTF
$ cd AdminTF

在 ??main.tf?? 中,添加以下內(nèi)容:

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)建一個(gè)租戶 Terraform 文件

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

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

首先,創(chuàng)建一個(gè) ??TenantTF?? 目錄,用于與租戶相關(guān)的置備:

$ mkdir TenantTF
$ cd TenantTF

在 ??main.tf?? 中,添加以下內(nèi)容:

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?? 從鏡像源下載提供者用于置備此項(xiàng)目。
  • ??terraform fmt?? 格式化文件,以便在倉庫中使用。

創(chuàng)建一個(gè) Terraform 計(jì)劃

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

對于管理員:

$ cd AdminTF
$ terraform validate
$ terraform plan

對于租戶:

$ cd TenantTF
$ terraform validate
$ terraform plan

命令解釋:

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

應(yīng)用你的第一個(gè) TF

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

對于管理員:

$ cd AdminTF
$ terraform apply

對于租戶:

$ cd TenantTF
$ terraform apply

接下來的步驟

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

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

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虛擬機(jī)

2021-01-31 10:48:24

命令Systemctl工具

2021-05-18 16:25:44

systemd啟動(dòng)項(xiàng)系統(tǒng)運(yùn)維

2024-11-06 10:22:23

Akamai云計(jì)算虛擬專用云

2023-02-21 08:01:20

AWSTerraform管理

2019-06-06 10:30:30

Windows管理中心Windows 10

2020-01-18 18:41:13

GitGit服務(wù)器開源

2023-06-15 08:00:23

2023-11-26 00:52:12

Docker鏡像容器

2022-05-18 07:30:51

OperatorprometheusVM 集群

2017-09-13 09:48:27

WSSSOFS集群存儲

2019-03-04 10:45:57

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

2010-06-24 12:00:21

2025-02-24 10:07:09

Redis節(jié)點(diǎn)遷移集群

2010-08-13 11:28:00

思科路由器

2010-08-06 09:05:17

2016-11-09 14:16:39

HBase集群管理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號