成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用 Terraform 來管理 OpenStack 集群

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

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

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

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

安裝 Terraform

我使用 CentOS 作為跳板機運行 Terraform。根據官方文檔,第一步是添加 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 中,你需要一個 提供者provider,它是一個轉換器,Terraform 調用它將你的 ??.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?? 目錄,用于與租戶相關的置備:

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

責任編輯:龐桂玉 來源: 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啟動項系統運維

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系統性能命令

2010-08-06 09:05:17

2010-08-13 11:28:00

思科路由器

2025-02-24 10:07:09

Redis節點遷移集群

2019-03-31 17:28:37

Arch LinuxLinux鏡像
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲夜射 | av天天操| 成人国产精品久久久 | 久久久久久久一区 | 99久久免费精品国产免费高清 | 涩涩视频大全 | 免费看一区二区三区 | 亚洲精品福利视频 | 国产精品免费一区二区三区四区 | 久久综合一区二区三区 | 日本一区不卡 | 成人做爰www免费看 午夜精品久久久久久久久久久久 | 日韩精品一区二区三区视频播放 | 操网站| 国产在线a视频 | 在线播放亚洲 | 欧美h视频 | 国产精品高潮呻吟久久久久 | 午夜影院中文字幕 | 久久av一区二区三区 | 欧美视频一区二区三区 | 久久国产精品偷 | 91久久精品一区二区二区 | 国产www. | 久久777| 亚洲精品一区在线观看 | 夜夜摸天天操 | 久久电影一区 | 欧美区在线观看 | 日日干天天干 | 性色av一区二区三区 | 成人欧美一区二区三区色青冈 | 久久不卡 | 欧美激情亚洲激情 | 国产一区二 | 久久精品亚洲国产奇米99 | 亚洲综合二区 | 欧美一区二区三区在线观看 | 国产69精品久久99不卡免费版 | 久国产精品 | 伊人久久免费视频 |