Rumah  >  Artikel  >  tutorial komputer  >  Gunakan Terraform untuk mengurus kelompok OpenStack

Gunakan Terraform untuk mengurus kelompok OpenStack

WBOY
WBOYke hadapan
2024-02-18 16:42:23532semak imbas

Gunakan Terraform untuk mengurus kelompok OpenStack

Terraform ialah bahasa pengisytiharan yang berfungsi sebagai pelan tindakan untuk infrastruktur yang anda sedang bina.

Setelah mempunyai persekitaran pengeluaran OpenStack dan makmal rumah buat seketika, saya mengesahkan kepentingan mengatur dan mengurus beban kerja daripada perspektif pentadbir dan penyewa.

Terraform ialah alat perisian sumber terbuka untuk mengurus infrastruktur sebagai kod, mencipta pelan tindakan infrastruktur melalui bahasa deklaratif. Ia menyokong pengurusan Git dan sesuai untuk GitOps.

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

Pasang 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 menjadi panggilan API ke platform yang anda aturkan.

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

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

Terdapat penyedia komuniti OpenStack yang baik di pautan ini. Untuk menggunakan pembekal ini, buat .tf文件,并命名为main.tf fail dan namakannya

.

$ vi main.tf
main.tfTambah yang berikut pada

:

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_USERNAMEOS_TENANTOS_PASSWORDOS_AUTH_URLOS_REGIONAnda perlu mengubah suai

pembolehubah agar ini berfungsi.

Buat fail pengurusan Terraform

Fail pengurusan OpenStack menumpukan pada penyediaan rangkaian luaran, penghalaan, pengguna, imej, profil penyewa dan kuota.

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

AdminTFPertama, buat

direktori untuk memperuntukkan sumber:

$ mkdir AdminTF

$ cd AdminTF
main.tfDalam

, 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 oleh fail Admin di atas.

TenantTFPertama sekali, buat direktori

untuk peruntukan berkaitan penyewa:

$ mkdir TenantTF
$ cd TenantTF
main.tfDalam

, 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 = “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"
}
}
Mulakan Terraform anda

Selepas mencipta fail Terraform, anda perlu memulakan Terraform.

Untuk Admin:

$ cd AdminTF

$ terraform init

$ terraform fmt

Untuk penyewa:

$ cd TenantTF

$ terraform init

$ terraform fmt

Penjelasan arahan:
  • terraform init
  • Muat turun penyedia dari sumber cermin untuk menyediakan projek ini.
  • terraform fmt
  • Formatkan fail untuk digunakan dalam repositori.

Buat pelan Terraform

Seterusnya, buat rancangan untuk anda melihat sumber yang akan dibuat.

Untuk Admin:

$ cd AdminTF

$ terraform validate

$ terraform plan

Untuk penyewa:

$ cd TenantTF

$ terraform validate

$ terraform plan

Penjelasan arahan:
  • terraform validate验证.tfterraform validate Sahkan
  • sama ada sintaksnya betul.
  • terraform plan
  • Cipta fail pelan dalam cache dan semua sumber terurus boleh dijejaki apabila ia dicipta dan dimusnahkan.

Gunakan TF pertama anda

terraform applyUntuk menggunakan sumber, gunakan arahan

. Perintah ini menggunakan semua keadaan sumber dalam fail pelan.

Untuk Admin:

$ cd AdminTF

$ terraform apply

Untuk penyewa:🎜
$ 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:mryunwei.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Artikel sebelumnya:Manual arahan Linux execArtikel seterusnya:Manual arahan Linux exec