Terraform-dan istifadə edin
Terraform OpenStack provayderini tətbiq giriş məlumatının faylları ilə konfiqurasiya edin və Terraform ilə layihədə resurslar yaradın və idarə edin.
Terraform layihənizin (project) resurslarını OpenStack provayderi, yəni terraform-provider-openstack/openstack vasitəsilə idarə edir. Provayder clouds.yaml faylından oxuduğu tətbiq giriş məlumatı (application credential) ilə daxil olur, buna görə Terraform fayllarınızda sirr (secret) olmur.
Başlamazdan əvvəl
- Terraform-u quraşdırın.
- Layihədə Full access profilli tətbiq giriş məlumatı yaradın və
clouds.yamlvəmain.tffayllarını endirin. Tətbiq giriş məlumatı yaradın səhifəsinə baxın. - Komandanın və ya CI konveyerinin işə saldığı Terraform üçün xidmət hesabının (service account) giriş məlumatından istifadə edin, hər konveyer üçün bir. Şəxsi giriş məlumatı sahibi təşkilatınızdan ayrıldıqda və ya layihədəki rolunu itirdikdə işləməyi dayandırır.
Provayderi konfiqurasiya edin
main.tf və clouds.yaml fayllarını eyni qovluğa qoyun və ya clouds.yaml faylını ~/.config/openstack/ qovluğuna qoyun. Konsolun yaratdığı main.tf faylı belə görünür:
terraform {
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = "~> 3.4"
}
}
}
provider "openstack" {
cloud = "bulutistan"
}
# Read-only check that the credential works: the project it is bound to.
data "openstack_identity_auth_scope_v3" "current" {
name = "current"
}
output "project_id" {
value = data.openstack_identity_auth_scope_v3.current.project_id
}cloud = "bulutistan" clouds.yaml faylındakı eyni adlı qeydi seçir. Region və son nöqtə (endpoint) də həmin fayldan götürülür.
Yoxlayın
terraform init
terraform applyterraform apply əmri project_id dəyərini, yəni giriş məlumatının bağlı olduğu layihənin ID-sini çıxışa verir. Konfiqurasiya yalnız məlumatları oxuyur, buna görə heç nə yaratmır.
Resurslar yaradın
Bu nümunə şəbəkə (network), altşəbəkə (subnet) və istənilən yerdən HTTPS-ə icazə verən qaydası olan təhlükəsizlik qrupu (security group) yaradır. Onu main.tf faylına əlavə edin və ya məlumat mənbəyini və çıxışı onunla əvəz edin:
resource "openstack_networking_network_v2" "app" {
name = "tf-quickstart"
}
resource "openstack_networking_subnet_v2" "app" {
name = "tf-quickstart"
network_id = openstack_networking_network_v2.app.id
cidr = "192.168.50.0/24"
ip_version = 4
}
resource "openstack_networking_secgroup_v2" "web" {
name = "tf-quickstart-web"
description = "HTTPS in"
}
resource "openstack_networking_secgroup_rule_v2" "https" {
security_group_id = openstack_networking_secgroup_v2.web.id
direction = "ingress"
ethertype = "IPv4"
protocol = "tcp"
port_range_min = 443
port_range_max = 443
remote_ip_prefix = "0.0.0.0/0"
}
output "network_id" {
value = openstack_networking_network_v2.app.id
}terraform plan
terraform apply
terraform destroyterraform destroy resursları yenidən silir.
Terraform resursları konsolla necə əlaqəlidir
- Terraform-un yaratdığı resurslar konsolda gördüyünüz resursların eynisidir. Onlar layihədə görünür və konsolda yaratdığınız resurslar kimi hesablanır.
- Onlar abunəliyin (subscription) kvotasına və layihənin ayırmasına (allocation) daxil edilir. Ayırmanı aşan sorğu rədd edilir. Kvotalar səhifəsinə baxın.
İstifadə edə bildiyiniz resurs tiplərini yoxlayın
Konsolda OpenStack API guide səhifəsi Terraform provayderinin resurs tiplərini və onların bu buludda dəstəklənmə statusunu siyahıya alır. Onu açmaq üçün Identity & AccessOpenStack API access bölməsinə keçin və Guide düyməsini seçin. Resurs tipini konfiqurasiyada istifadə etməzdən əvvəl onu orada yoxlayın.