موږ د سیلیکیل سره کار کولو لپاره رسمي ټریفارم چمتو کونکی په لاره اچولی دی. دا محصول کاروونکو ته اجازه ورکوي چې د زیربنا په توګه کوډ میتودولوژي (د کوډ په توګه زیربنا) له لارې د سرچینو مدیریت په بشپړ ډول پلي کړي.
وړاندې کوونکی اوس مهال د خدماتو سرچینې مدیریت ملاتړ کوي
لکه څنګه چې تاسو دمخه پوهیږئ، د VPC خدمت د OpenStack په سر کې جوړ شوی. په هرصورت، د دې حقیقت له امله چې OpenStack د عامه کلاوډ خدمت کولو لپاره اصلي وسیلې نه وړاندې کوي، موږ د اضافي APIs په سیټ کې ورک شوي فعالیت پلي کړی چې د پیچلو جامع شیانو مدیریت ساده کوي او کار ډیر اسانه کوي. په OpenStack کې د موجود فعالیت برخه د مستقیم کارونې څخه تړل شوې، مګر له لارې شتون لري
د سیلیکیل ټریفارم چمتو کونکی اوس د لاندې VPC سرچینو اداره کولو وړتیا لري:
- پروژې او د هغوی کوټې؛
- کاروونکي، د هغوی رول او نښې؛
- عامه فرعي نیټونه، په شمول د کراس سیمه ایز او VRRP؛
- د سافټویر جوازونه.
چمتو کوونکی زموږ د عامه Go کتابتون د VPC API سره کار کولو لپاره کاروي. دواړه کتابتون او چمتو کونکي پخپله خلاص سرچینه دي ، دوی په ګیتوب کې رامینځته کیږي:
- د کتابتون ذخیره
لاړ شه-selvpcclient , - د چمتو کونکي ذخیره
Terraform-provider Selectel .
د بادل پاتې سرچینو اداره کولو لپاره ، لکه مجازی ماشینونه ، ډیسکونه ، د کبرنیټ کلسترونه ، تاسو کولی شئ د OpenStack Terraform چمتو کونکي وکاروئ. د دواړو چمتو کونکو لپاره رسمي اسناد په لاندې لینکونو کې شتون لري:
- د انتخاب سرچینې اسناد:
Terraform-provider Selectel , - د OpenStack سرچینې اسناد:
د Terraform چمتو کونکي OpenStack .
تر لاسه کول پیل شول
د پیل کولو لپاره، تاسو اړتیا لرئ چې ټیرفارم نصب کړئ (د نصب کولو کڅوړو لارښوونې او لینکونه په دې کې موندل کیدی شي.
د کار کولو لپاره، چمتو کوونکی د Selectel API کلید ته اړتیا لري، کوم چې په کې جوړ شوی
د سلیکٹیل سره د کار کولو لپاره منشورونه د Terraform په کارولو سره یا د چمتو شوي مثالونو سیټ په کارولو سره رامینځته شوي چې زموږ د ګیتوب ذخیره کې شتون لري:
د مثالونو سره ذخیره په دوه لارښودونو ویشل شوې ده:
- ماډلونه، د بیا کارونې وړ کوچني ماډلونه لري چې د پیرامیټرو سیټ د ان پټ په توګه اخلي او د سرچینو کوچنۍ سیټ اداره کوي؛
- بېلګې، د یو بل سره وصل شوي ماډلونو بشپړ سیټ مثالونه لري.
د Terraform نصبولو وروسته، د سلیکٹیل API کیلي رامینځته کول، او د مثالونو بیاکتنه، راځئ چې عملي مثالونو ته لاړ شو.
د محلي ډیسک سره د سرور جوړولو مثال
د پروژې رامینځته کولو مثال په پام کې ونیسئ ، یو کارونکی د رول سره او یو مجازی ماشین د ځایی ډیسک سره:
په دوتنه کې 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چې د اړتیا وړ سرچینې اداره کوي.
راځئ چې دې ماډلونو ته نږدې وګورو.
یوه پروژه او یو کارن د رول سره جوړ کړئ
لومړی ماډل یوه پروژه او یو کارن رامینځته کوي چې پدې پروژه کې رول لري:
جوړ شوی کارن به وکوالی شي 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 کې ښکاره شو:
دلیل سترګې پټول_بدلول_تصدیق د محلي ډیسک، کور، یا د سرور حافظې په بریالیتوب سره بیا اندازه کولو ته اړتیا ده. دا ډول بدلونونه د غوښتنې په کارولو سره د OpenStack Nova برخې له لارې رامینځته شوي ورواړوو. د غوښتنې پراساس ډیفالټ نووا ورواړوو سرور په حالت کې ساتي verify_resize او د کارونکي څخه اضافي تایید ته انتظار باسي. په هرصورت، دا چلند بدلیدلی شي ترڅو نووا د اضافي ګام اخیستو لپاره کارونکي ته انتظار ونه کړي.
ټاکل شوی دلیل Terraform ته اجازه ورکوي چې وضعیت ته انتظار ونه کړي verify_resize د سرور لپاره او د دې حقیقت لپاره چمتو اوسئ چې سرور به د پیرامیټونو بدلولو وروسته په فعال حالت کې وي. دلیل د OpenStack Terraform چمتو کونکي نسخه 1.10.0 راهیسې شتون لري:
د سرچینو جوړول
د منشور پیل کولو دمخه ، دا باید په پام کې ونیول شي چې زموږ په مثال کې دوه مختلف چمتو کونکي په لاره اچول شوي ، او د OpenStack چمتو کونکي د Selectel چمتو کونکي سرچینو پورې اړه لري ، ځکه چې په پروژه کې د کارونکي رامینځته کولو پرته ، د هغه پورې اړوند شیانو اداره کول ناممکن دي. . له بده مرغه، د ورته دلیل لپاره، موږ نشو کولی په ساده ډول قوماندې پرمخ بوځو terraform پلي کیږي زموږ د مثال دننه. موږ باید لومړی ترسره کړو غوښتنلیک د ماډل لپاره پروژه_سره_کارونکي او وروسته د هر څه لپاره.
یادونه: راپور شوې مسله لاهم په ټیرفارم کې نه ده حل شوې ، تاسو کولی شئ په ګیتوب کې بحث تعقیب کړئ
د سرچینو رامینځته کولو لپاره ، لارښود ته لاړشئ
$ 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 پلي کیږي، کوم چې موږ لا دمخه پیل کړی دی.
ټول جوړ شوي توکي به په کې ښودل شي
زموږ کې
د Kubernetes کلستر جوړولو یوه بیلګه
مخکې له دې چې راتلونکي مثال ته لاړ شو، موږ به هغه سرچینې پاکې کړو چې مخکې مو جوړې کړې وې. د دې کولو لپاره، د پروژې په ریښه کې
$ 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
لاندې مثال په لارښود کې دی
دا مثال یوه پروژه رامینځته کوي، یو کارن چې په پروژه کې رول لري، او یو د 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 له لارې د ننوتلو معلوماتو په توګه رامینځته شوي. که تاسو بدلون نه وي کړی vars.tf او یا main.tf زموږ د مثال لپاره، کارن به نوم ولري tf_user. د متغیر ارزښت باید د پټنوم په توګه وکارول شي TF_VAR_user_password، کوم چې په پیل کې مشخص شوی و terraform پلي کیږي مخکې
د پروژې دننه، تاسو اړتیا لرئ چې ټب ته لاړ شئ کوبنیټس:
دلته یو کلستر دی چې د Terraform له لارې رامینځته شوی. لپاره فایل ډاونلوډ کړئ kubectl تاسو کولی شئ په "لاسرسۍ" ټب کې:
دا ټب د نصبولو لارښوونې لري. 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
پایلې
په دې مقاله کې، موږ د کار کولو اصلي لارو سره اشنا شو
د سلیکٹیل ټریفارم چمتو کونکي ټول موندل شوي بګ له لارې راپور کیدی شي
سرچینه: www.habr.com