د Terraform چمتو کوونکی Selectel

د Terraform چمتو کوونکی Selectel

موږ د سیلیکیل سره کار کولو لپاره رسمي ټریفارم چمتو کونکی په لاره اچولی دی. دا محصول کاروونکو ته اجازه ورکوي چې د زیربنا په توګه کوډ میتودولوژي (د کوډ په توګه زیربنا) له لارې د سرچینو مدیریت په بشپړ ډول پلي کړي.

وړاندې کوونکی اوس مهال د خدماتو سرچینې مدیریت ملاتړ کوي "مجازی شخصي کلاوډ" (له دې وروسته VPC). په راتلونکي کې، موږ پالن لرو چې د نورو خدماتو سرچینې مدیریت اضافه کړو چې د سلیکټیل لخوا چمتو شوي.

لکه څنګه چې تاسو دمخه پوهیږئ، د VPC خدمت د OpenStack په سر کې جوړ شوی. په هرصورت، د دې حقیقت له امله چې OpenStack د عامه کلاوډ خدمت کولو لپاره اصلي وسیلې نه وړاندې کوي، موږ د اضافي APIs په سیټ کې ورک شوي فعالیت پلي کړی چې د پیچلو جامع شیانو مدیریت ساده کوي او کار ډیر اسانه کوي. په OpenStack کې د موجود فعالیت برخه د مستقیم کارونې څخه تړل شوې، مګر له لارې شتون لري زموږ API.

د سیلیکیل ټریفارم چمتو کونکی اوس د لاندې VPC سرچینو اداره کولو وړتیا لري:

  • پروژې او د هغوی کوټې؛
  • کاروونکي، د هغوی رول او نښې؛
  • عامه فرعي نیټونه، په شمول د کراس سیمه ایز او VRRP؛
  • د سافټویر جوازونه.

چمتو کوونکی زموږ د عامه Go کتابتون د VPC API سره کار کولو لپاره کاروي. دواړه کتابتون او چمتو کونکي پخپله خلاص سرچینه دي ، دوی په ګیتوب کې رامینځته کیږي:

د بادل پاتې سرچینو اداره کولو لپاره ، لکه مجازی ماشینونه ، ډیسکونه ، د کبرنیټ کلسترونه ، تاسو کولی شئ د OpenStack Terraform چمتو کونکي وکاروئ. د دواړو چمتو کونکو لپاره رسمي اسناد په لاندې لینکونو کې شتون لري:

تر لاسه کول پیل شول

د پیل کولو لپاره، تاسو اړتیا لرئ چې ټیرفارم نصب کړئ (د نصب کولو کڅوړو لارښوونې او لینکونه په دې کې موندل کیدی شي. رسمي ویب پاڼه).

د کار کولو لپاره، چمتو کوونکی د Selectel API کلید ته اړتیا لري، کوم چې په کې جوړ شوی د حساب کنټرول پینل.

د سلیکٹیل سره د کار کولو لپاره منشورونه د Terraform په کارولو سره یا د چمتو شوي مثالونو سیټ په کارولو سره رامینځته شوي چې زموږ د ګیتوب ذخیره کې شتون لري: terraform-مثالونه.

د مثالونو سره ذخیره په دوه لارښودونو ویشل شوې ده:

  • ماډلونه، د بیا کارونې وړ کوچني ماډلونه لري چې د پیرامیټرو سیټ د ان پټ په توګه اخلي او د سرچینو کوچنۍ سیټ اداره کوي؛
  • بېلګې، د یو بل سره وصل شوي ماډلونو بشپړ سیټ مثالونه لري.

د Terraform نصبولو وروسته، د سلیکٹیل API کیلي رامینځته کول، او د مثالونو بیاکتنه، راځئ چې عملي مثالونو ته لاړ شو.

د محلي ډیسک سره د سرور جوړولو مثال

د پروژې رامینځته کولو مثال په پام کې ونیسئ ، یو کارونکی د رول سره او یو مجازی ماشین د ځایی ډیسک سره: terraform-examples/examples/vpc/server_local_root_disk.

په دوتنه کې vars.tf ټول پارامترونه چې د زنګ وهلو په وخت کې کارول کیږي ماډلونه تشریح شوي. ځینې ​​یې ډیفالټ ارزښتونه لري، د بیلګې په توګه، سرور به په زون کې جوړ شي en-3a د لاندې ترتیب سره:

variable "server_vcpus" {
default = 4
}

variable "server_ram_mb" {
default = 8192
}

variable "server_root_disk_gb" {
default = 8
}

variable "server_image_name" {
default = "Ubuntu 18.04 LTS 64-bit"
}

په دوتنه کې main.tf د انتخابی چمتو کوونکی پیل شوی دی:

provider "selectel" {
token    = "${var.sel_token}"
}

دا فایل د SSH کیلي لپاره ډیفالټ ارزښت هم لري چې په سرور کې به نصب شي:

module "server_local_root_disk" {
...
server_ssh_key      = "${file("~/.ssh/id_rsa.pub")}"
}

که اړتیا وي، تاسو کولی شئ یو بل عامه کیلي مشخص کړئ. کیلي باید فایل ته د لارې په توګه مشخص نه شي ، تاسو کولی شئ ارزښت د تار په توګه هم اضافه کړئ.

نور په دې فایل کې ماډلونه پیل شوي پروژه_سره_کارونکي и server_local_root_diskچې د اړتیا وړ سرچینې اداره کوي.

راځئ چې دې ماډلونو ته نږدې وګورو.

یوه پروژه او یو کارن د رول سره جوړ کړئ

لومړی ماډل یوه پروژه او یو کارن رامینځته کوي چې پدې پروژه کې رول لري: terraform-examples/modules/vpc/project_with_user.

جوړ شوی کارن به وکوالی شي OpenStack ته ننوتل او د هغې سرچینې اداره کړي. ماډل ساده دی او یوازې درې ادارې اداره کوي:

  • Selectel_vpc_project_v2,
  • Selectel_vpc_user_v2،
  • Selectel_vpc_role_v2.

د محلي ډیسک سره د مجازی سرور رامینځته کول

دوهم ماډل د OpenStack شیانو اداره کولو سره معامله کوي کوم چې د محلي ډیسک سره د سرور جوړولو لپاره اړین دي.

تاسو باید ځینې دلیلونو ته پام وکړئ چې د سرچینې لپاره پدې ماډل کې مشخص شوي openstack_compute_instance_v2:

resource "openstack_compute_instance_v2" "instance_1" {
  ...

  lifecycle {
    ignore_changes = ["image_id"]
  }

  vendor_options {
    ignore_resize_confirmation = true
  }
}

دلیل د بدلونونو څخه سترګې پټې کړئ اجازه ورکوي چې د ځانګړتیا بدلون له پامه غورځوي id د هغه انځور لپاره چې د مجازی ماشین جوړولو لپاره کارول کیږي. د VPC خدمت کې، ډیری عامه عکسونه په اونۍ کې یو ځل په اتوماتيک ډول تازه کیږي او په ورته وخت کې دوی دي id هم بدلون کوي. دا د OpenStack برخې - Glance د عملیاتو ځانګړتیاو له امله دی، په کوم کې چې انځورونه د بدلون وړ نهادونه ګڼل کیږي.

که تاسو یو موجود سرور یا ډیسک رامینځته کړئ یا بدل کړئ چې د دلیل په توګه لري image_id لخوا کارول شوی id عامه عکس ، بیا وروسته له دې چې عکس تازه شي ، د Terraform مینی فیسټ چلول به سرور یا ډیسک بیا جوړ کړي. د استدلال په کارولو سره د بدلونونو څخه سترګې پټې کړئ د داسې حالت څخه مخنیوی کوي.

یادونه: دلیل د بدلونونو څخه سترګې پټې کړئ ډیر وخت دمخه په Terraform کې ښکاره شو: کش #2525.

دلیل سترګې پټول_بدلول_تصدیق د محلي ډیسک، کور، یا د سرور حافظې په بریالیتوب سره بیا اندازه کولو ته اړتیا ده. دا ډول بدلونونه د غوښتنې په کارولو سره د OpenStack Nova برخې له لارې رامینځته شوي ورواړوو. د غوښتنې پراساس ډیفالټ نووا ورواړوو سرور په حالت کې ساتي verify_resize او د کارونکي څخه اضافي تایید ته انتظار باسي. په هرصورت، دا چلند بدلیدلی شي ترڅو نووا د اضافي ګام اخیستو لپاره کارونکي ته انتظار ونه کړي.

ټاکل شوی دلیل Terraform ته اجازه ورکوي چې وضعیت ته انتظار ونه کړي verify_resize د سرور لپاره او د دې حقیقت لپاره چمتو اوسئ چې سرور به د پیرامیټونو بدلولو وروسته په فعال حالت کې وي. دلیل د OpenStack Terraform چمتو کونکي نسخه 1.10.0 راهیسې شتون لري: کش #422.

د سرچینو جوړول

د منشور پیل کولو دمخه ، دا باید په پام کې ونیول شي چې زموږ په مثال کې دوه مختلف چمتو کونکي په لاره اچول شوي ، او د OpenStack چمتو کونکي د Selectel چمتو کونکي سرچینو پورې اړه لري ، ځکه چې په پروژه کې د کارونکي رامینځته کولو پرته ، د هغه پورې اړوند شیانو اداره کول ناممکن دي. . له بده مرغه، د ورته دلیل لپاره، موږ نشو کولی په ساده ډول قوماندې پرمخ بوځو terraform پلي کیږي زموږ د مثال دننه. موږ باید لومړی ترسره کړو غوښتنلیک د ماډل لپاره پروژه_سره_کارونکي او وروسته د هر څه لپاره.

یادونه: راپور شوې مسله لاهم په ټیرفارم کې نه ده حل شوې ، تاسو کولی شئ په ګیتوب کې بحث تعقیب کړئ ګڼه #2430 и ګڼه #4149.

د سرچینو رامینځته کولو لپاره ، لارښود ته لاړشئ terraform-examples/examples/vpc/server_local_root_diskد هغې محتوا باید داسې وي:

$ ls
README.md	   main.tf		vars.tf

موږ د کمانډ په کارولو سره ماډلونه پیل کوو:

$ terraform init

محصول ښیې چې Terraform د کارول شوي چمتو کونکو وروستي نسخې ډاونلوډ کوي او ټول ماډلونه چیک کوي چې په مثال کې تشریح شوي.

لومړی ماډل پلي کړئ پروژه_سره_کارونکي. دا د متغیرونو لپاره په لاسي ډول تیریدلو ارزښتونو ته اړتیا لري چې ندي ټاکل شوي:

  • sel_account ستاسو د انتخابي حساب شمیرې سره؛
  • sel_token ستاسو د Selectel API کیلي سره؛
  • کارن_پټون د OpenStack کارونکي لپاره د پټنوم سره.

د لومړیو دوه متغیرونو ارزښتونه باید له دې څخه واخیستل شي د کنټرول پینلونه.

د وروستي متغیر لپاره، تاسو کولی شئ د هر پټنوم سره راشي.

د ماډل کارولو لپاره، تاسو اړتیا لرئ چې ارزښتونه بدل کړئ SEL_ACCOUNT, SEL_TOKEN и USER_PASSWORD د قوماندې په چلولو سره:

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform apply -target=module.project_with_user

د کمانډ چلولو وروسته، Terraform به وښيي چې کومې سرچینې رامینځته کول غواړي او تایید ته اړتیا لري:

Plan: 3 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.

Enter a value: yes

یوځل چې پروژه ، کارونکي او رول رامینځته شي ، تاسو کولی شئ د پاتې سرچینو رامینځته کول پیل کړئ:

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform apply

کله چې سرچینې رامینځته کړئ ، د بهرني IP پتې سره د Terraform محصول ته پاملرنه وکړئ چیرې چې رامینځته شوی سرور به شتون ولري:

module.server_local_root_disk.openstack_networking_floatingip_associate_v2.association_1: Creating...
  floating_ip: "" => "x.x.x.x"

تاسو کولی شئ د ټاکل شوي IP په کارولو سره د SSH له لارې رامینځته شوي مجازی ماشین سره کار وکړئ.

د سرچینو ترمیم کول

د Terraform له لارې سرچینې رامینځته کولو سربیره ، دوی هم ترمیم کیدی شي.

د مثال په توګه ، راځئ چې د پیرامیټونو لپاره ارزښتونو بدلولو سره زموږ د سرور لپاره د کورونو او حافظې شمیر زیات کړو سرور_vcpus и سرور_رام_mb په دوتنه کې مثالونه/vpc/server_local_root_disk/main.tf:

-  server_vcpus        = "${var.server_vcpus}"
-  server_ram_mb       = "${var.server_ram_mb}"
+  server_vcpus        = 8
+  server_ram_mb       = 10240

له هغې وروسته، موږ ګورو چې کوم بدلونونه به د لاندې کمانډ کارولو لامل شي:

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform plan

د پایلې په توګه، Terraform د سرچینې بدلون رامنځته کړ openstack_compute_instance_v2 и openstack_compute_flavor_v2.

مهرباني وکړئ په یاد ولرئ چې دا به د رامینځته شوي مجازی ماشین ریبوټ کولو ته اړتیا ولري.

د نوي مجازی ماشین ترتیب پلي کولو لپاره، کمانډ وکاروئ terraform پلي کیږي، کوم چې موږ لا دمخه پیل کړی دی.

ټول جوړ شوي توکي به په کې ښودل شي د VPC کنټرول پینل:

د Terraform چمتو کوونکی Selectel

زموږ کې د مثالونو ذخیره تاسو کولی شئ د شبکې ډرایو سره د مجازی ماشینونو رامینځته کولو لپاره څرګندونه هم وګورئ.

د Kubernetes کلستر جوړولو یوه بیلګه

مخکې له دې چې راتلونکي مثال ته لاړ شو، موږ به هغه سرچینې پاکې کړو چې مخکې مو جوړې کړې وې. د دې کولو لپاره، د پروژې په ریښه کې terraform-examples/examples/vpc/server_local_root_disk د OpenStack شیانو حذف کولو لپاره کمانډ چل کړئ:

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform destroy -target=module.server_local_root_disk

بیا د Selectel VPC API څیزونو پاکولو لپاره کمانډ پرمخ وړئ:

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform destroy -target=module.project_with_user

په دواړو حالتونو کې، تاسو اړتیا لرئ چې د ټولو شیانو حذف کول تایید کړئ:

Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure, as shown above.
There is no undo. Only 'yes' will be accepted to confirm.

Enter a value: yes

لاندې مثال په لارښود کې دی terraform-examples/examples/vpc/kubernetes_cluster.

دا مثال یوه پروژه رامینځته کوي، یو کارن چې په پروژه کې رول لري، او یو د Kubernetes کلستر پورته کوي. په دوتنه کې vars.tf تاسو کولی شئ ډیفالټ ارزښتونه وګورئ، لکه د نوډونو شمیر، د دوی ځانګړتیاوې، د کبرنیټ نسخه، او نور.

د سرچینې رامینځته کولو لپاره ، د لومړي مثال په څیر ، لومړی ، راځئ چې د ماډلونو ابتکار او د ماډل سرچینو رامینځته کول پیل کړو. پروژه_سره_کارونکياو بیا نور هرڅه جوړ کړئ:

$ terraform init

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform apply -target=module.project_with_user

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform apply

راځئ چې د OpenStack Magnum برخې له لارې د Kubernetes کلسترونو جوړول او مدیریت انتقال کړو. تاسو کولی شئ زموږ په یوه کې د کلستر سره د کار کولو څرنګوالي په اړه نور معلومات زده کړئ پخوانۍ مقالېاو همدارنګه په د پوهې اساس.

کله چې د کلستر چمتو کول، ډیسکونه، مجازی ماشینونه به جوړ شي او ټول اړین برخې به نصب شي. چمتووالی شاوخوا 4 دقیقې وخت نیسي، په دې وخت کې Terraform به پیغامونه ښکاره کړي لکه:

module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Still creating... (3m0s elapsed)

وروسته له دې چې نصب بشپړ شي، Terraform به راپور ورکړي چې کلستر چمتو دی او خپل ID ښکاره کوي:

module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Creation complete after 4m20s (ID: 3c8...)

Apply complete! Resources: 6 added, 0 changed, 0 destroyed.

د یوټیلیټ له لارې د جوړ شوي Kubernetes کلستر اداره کول kubectl تاسو اړتیا لرئ د کلستر لاسرسي فایل ترلاسه کړئ. د دې کولو لپاره ، په خپل حساب کې د پروژو لیست کې د Terraform له لارې رامینځته شوې پروژې ته لاړشئ:

د Terraform چمتو کوونکی Selectel

بیا لینک تعقیب کړئ xxxxxx.selvpc.ru، کوم چې د پروژې نوم لاندې ښودل شوی:

د Terraform چمتو کوونکی Selectel

د کارن نوم او پټنوم وکاروئ چې د Terraform له لارې د ننوتلو معلوماتو په توګه رامینځته شوي. که تاسو بدلون نه وي کړی vars.tf او یا main.tf زموږ د مثال لپاره، کارن به نوم ولري tf_user. د متغیر ارزښت باید د پټنوم په توګه وکارول شي TF_VAR_user_password، کوم چې په پیل کې مشخص شوی و terraform پلي کیږي مخکې

د پروژې دننه، تاسو اړتیا لرئ چې ټب ته لاړ شئ کوبنیټس:

د Terraform چمتو کوونکی Selectel

دلته یو کلستر دی چې د Terraform له لارې رامینځته شوی. لپاره فایل ډاونلوډ کړئ kubectl تاسو کولی شئ په "لاسرسۍ" ټب کې:

د Terraform چمتو کوونکی Selectel

دا ټب د نصبولو لارښوونې لري. kubectl او ډاونلوډ شوی وکاروئ config.yaml.

د لانچ وروسته kubectl او د چاپیریال متغیر تنظیم کول KUBECONFIG تاسو کولی شئ Kubernetes وکاروئ:

$ kubectl get pods --all-namespaces

NAMESPACE        NAME                                    READY  STATUS  RESTARTS AGE
kube-system   coredns-9578f5c87-g6bjf                      1/1   Running   0 8m
kube-system   coredns-9578f5c87-rvkgd                     1/1   Running   0 6m
kube-system   heapster-866fcbc879-b6998                 1/1   Running   0 8m
kube-system   kube-dns-autoscaler-689688988f-8cxhf             1/1   Running   0 8m
kube-system   kubernetes-dashboard-7bdb5d4cd7-jcjq9          1/1   Running   0 8m
kube-system   monitoring-grafana-84c97bb64d-tc64b               1/1   Running   0 8m
kube-system   monitoring-influxdb-7c8ccc75c6-dzk5f                1/1   Running   0 8m
kube-system   node-exporter-tf-cluster-rz6nggvs4va7-minion-0 1/1   Running   0 8m
kube-system   node-exporter-tf-cluster-rz6nggvs4va7-minion-1 1/1   Running   0 8m
kube-system   openstack-cloud-controller-manager-8vrmp        1/1   Running   3 8m
prometeus-monitoring   grafana-76bcb7ffb8-4tm7t       1/1   Running   0 8m
prometeus-monitoring   prometheus-75cdd77c5c-w29gb           1/1   Running   0 8m

د کلستر نوډونو شمیر په اسانۍ سره د Terraform له لارې بدلیږي.
په دوتنه کې main.tf لاندې ارزښت ورکول کیږي:

cluster_node_count = "${var.cluster_node_count}"

دا ارزښت د دې څخه بدل شوی vars.tf:

variable "cluster_node_count" {
default = 2
}

تاسو کولی شئ د ډیفالټ ارزښت په کې بدل کړئ vars.tf، یا په مستقیم ډول د اړتیا وړ ارزښت مشخص کړئ main.tf:

-  cluster_node_count = "${var.cluster_node_count}"
+  cluster_node_count = 3

د بدلونونو پلي کولو لپاره، لکه څنګه چې د لومړي مثال په صورت کې، کمانډ وکاروئ terraform پلي کیږي:

$ env 
TF_VAR_sel_account=SEL_ACCOUNT 
TF_VAR_sel_token=SEL_TOKEN 
TF_VAR_user_password=USER_PASSWORD 
terraform apply

که د نوډونو شمیر بدل شي، کلستر به شتون ولري. د Terraform له لارې د نوډ اضافه کولو وروسته، تاسو کولی شئ دا د اضافي ترتیب پرته وکاروئ:

$ kubectl get nodes
NAME                               STATUS                     ROLES     AGE   VERSION
tf-cluster-rz6nggvs4va7-master-0   Ready,SchedulingDisabled   master    8m    v1.12.4
tf-cluster-rz6nggvs4va7-minion-0   Ready                      <none>    8m    v1.12.4
tf-cluster-rz6nggvs4va7-minion-1   Ready                      <none>    8m    v1.12.4
tf-cluster-rz6nggvs4va7-minion-2   Ready                      <none>    3m    v1.12.4

پایلې

په دې مقاله کې، موږ د کار کولو اصلي لارو سره اشنا شو "مجازی شخصي کلاوډ" د Terraform له لارې. موږ به خوښ یو که تاسو د رسمي سلیکټیل ټریفارم چمتو کونکي څخه کار واخلئ او فیډبیک ورکړئ.

د سلیکٹیل ټریفارم چمتو کونکي ټول موندل شوي بګ له لارې راپور کیدی شي د ګیتوب مسلې.

سرچینه: www.habr.com

Add a comment