Gunakan Terraform untuk mengurus kelompok OpenStack

WBOY
Lepaskan: 2024-02-18 16:42:23
ke hadapan
547 orang telah melayarinya

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
Salin selepas log masuk

Seterusnya, pasang Terraform:

$ sudo dnf install terraform -y
Salin selepas log masuk

Sahkan pemasangan:

$ terraform –version
Salin selepas log masuk

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
Salin selepas log masuk
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”
}
Salin selepas log masuk
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
Salin selepas log masuk
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"
}
Salin selepas log masuk
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
Salin selepas log masuk
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"
}
}
Salin selepas log masuk
Mulakan Terraform anda

Selepas mencipta fail Terraform, anda perlu memulakan Terraform.

Untuk Admin:

$ cd AdminTF

$ terraform init

$ terraform fmt
Salin selepas log masuk

Untuk penyewa:

$ cd TenantTF

$ terraform init

$ terraform fmt
Salin selepas log masuk

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
Salin selepas log masuk

Untuk penyewa:

$ cd TenantTF

$ terraform validate

$ terraform plan
Salin selepas log masuk

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
Salin selepas log masuk

Untuk penyewa:🎜
$ cd TenantTF

$ terraform apply
Salin selepas log masuk

接下来的步骤

之前,我写了一篇关于在树莓派上部署最小 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!

Label berkaitan:
sumber:mryunwei.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan