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.
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.
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:
Terdapat penyedia komuniti OpenStack yang baik di pautan ini. Untuk menggunakan pembekal ini, buat .tf
文件,并命名为main.tf
fail dan namakannya
$ vi main.tf
main.tf
Tambah 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_USERNAME
、OS_TENANT
、OS_PASSWORD
、OS_AUTH_URL
和OS_REGION
Anda perlu mengubah suai pembolehubah agar ini berfungsi. 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.
AdminTF
Pertama, buat
$ mkdir AdminTF $ cd AdminTF
main.tf
Dalam , 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" }
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.
TenantTF
Pertama sekali, buat direktori
$ mkdir TenantTF $ cd TenantTF
main.tf
Dalam , 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" } }
Selepas mencipta fail Terraform, anda perlu memulakan Terraform.
Untuk Admin:
$ cd AdminTF $ terraform init $ terraform fmt
$ cd TenantTF $ terraform init $ terraform fmt
terraform init
terraform fmt
Seterusnya, buat rancangan untuk anda melihat sumber yang akan dibuat.
Untuk Admin:
$ cd AdminTF $ terraform validate $ terraform plan
$ cd TenantTF $ terraform validate $ terraform plan
terraform validate
验证.tf
terraform plan
terraform apply
Untuk menggunakan sumber, gunakan arahan
Untuk Admin:
$ 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!