Rumah >Operasi dan penyelenggaraan >Keselamatan >Gunakan Terraform untuk mengurus kelompok OpenStack

Gunakan Terraform untuk mengurus kelompok OpenStack

PHPz
PHPzke hadapan
2023-06-09 12:20:321204semak imbas

使用 Terraform 来管理 OpenStack 集群

Selepas mempunyai persekitaran pengeluaran OpenStack dan makmal rumah untuk seketika, saya boleh mengatakan dengan selamat bahawa menyediakan beban kerja dan pengurusan daripada perspektif pentadbir dan penyewa. penting.

Terraform ialah alat perisian Infrastruktur sebagai Kod (IaC) sumber terbuka untuk menyediakan rangkaian, pelayan, platform awan, dsb. Terraform ialah bahasa perisytiharan yang berfungsi sebagai pelan tindakan untuk infrastruktur yang anda sedang bina. Anda boleh mengurusnya dengan Git, yang mempunyai ​​GitOps​​ senario penggunaan yang berkuasa.

Artikel ini memperkenalkan asas mengurus kelompok OpenStack menggunakan Terraform. Saya mencipta semula projek demo OpenStack menggunakan Terraform.

Memasang Terraform

Saya menggunakan CentOS sebagai batu loncatan untuk menjalankan Terraform. Menurut dokumentasi rasmi, langkah pertama ialah menambah repositori Hashicorp:

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

Seterusnya, pasang Terraform:

$ sudo dnf install terraform -y

Sahkan pemasangan:

$ terraform –version

Jika anda melihat nombor versi dikembalikan , maka anda telah memasang Terraform.

Buat skrip Terraform untuk penyedia OpenStack

Dalam Terraform, anda memerlukan pembekal, iaitu penukar yang dipanggil Terraform untuk menukar ​​.tf​​ anda kepada panggilan API ke platform yang anda sedang menyelaras.

Terdapat tiga jenis penyedia: rasmi, rakan kongsi dan komuniti:

  • Pembekal rasmi diselenggara oleh Hashicorp.
  • Pembekal rakan kongsi diselenggara oleh syarikat teknologi yang bekerja dengan Hashicorp.
  • Pembekal komuniti diselenggarakan oleh ahli komuniti sumber terbuka.

Terdapat penyedia komuniti OpenStack yang baik di pautan ​​​​​ ini. Untuk menggunakan pembekal ini, buat ​​.tf​​​ fail dan namakannya ​​main.tf​​.

$ vi main.tf

Tambah kandungan berikut dalam ​​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”
}

Anda perlu mengubah suai ​​OS_USERNAME​​​, ​​OS_TENANT​​​, ​​OS_PASSWORD​​​, ​​OS_AUTH_URL​​​ dan ​​OS_REGION​​ pembolehubah akan berfungsi.

Buat fail pengurusan Terraform

Tumpuan fail pengurusan OpenStack adalah untuk menyediakan rangkaian luaran, laluan, pengguna, imej, profil penyewa dan kuota.

Contoh ini menyediakan gaya, laluan ke rangkaian luaran, imej ujian, profil penyewa dan pengguna.

Pertama sekali, buat direktori ​​AdminTF​​ untuk memperuntukkan sumber:

$ mkdir AdminTF
$ cd AdminTF

Dalam ​​main.tf​​, tambahkan yang berikut:

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"
}

Buat Fail Terraform penyewa

Sebagai penyewa, anda biasanya mencipta mesin maya. Anda juga membuat rangkaian dan kumpulan keselamatan untuk mesin maya ini.

Contoh ini menggunakan pengguna yang dibuat daripada fail Admin di atas.

Pertama, buat direktori ​​TenantTF​​ untuk peruntukan berkaitan penyewa:

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

Atas ialah kandungan terperinci Gunakan Terraform untuk mengurus kelompok OpenStack. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam