Darparwr terraform Selectel

Darparwr terraform Selectel

Rydym wedi lansio darparwr Terraform swyddogol i weithio gyda Selectel. Mae'r cynnyrch hwn yn galluogi defnyddwyr i weithredu rheolaeth adnoddau yn llawn trwy'r fethodoleg Seilwaith-fel-cod.

Mae'r darparwr yn cefnogi rheoli adnoddau gwasanaeth ar hyn o bryd "Cwmwl preifat rhithwir" (cyfeirir ato o hyn ymlaen fel VPC). Yn y dyfodol, rydym yn bwriadu ychwanegu rheolaeth adnoddau ar gyfer gwasanaethau eraill a ddarperir gan Selectel.

Fel y gwyddoch eisoes, mae'r gwasanaeth VPC wedi'i adeiladu ar OpenStack. Fodd bynnag, oherwydd y ffaith nad yw OpenStack yn darparu offer brodorol ar gyfer gwasanaethu'r cwmwl cyhoeddus, fe wnaethom weithredu'r swyddogaeth goll mewn set o APIs ychwanegol sy'n symleiddio rheolaeth gwrthrychau cyfansawdd cymhleth ac yn gwneud y gwaith yn fwy cyfleus. Ni ellir defnyddio rhai o'r swyddogaethau sydd ar gael yn OpenStack yn uniongyrchol, ond mae ar gael drwyddo ein API.

Mae darparwr Selectel Terraform bellach yn cynnwys y gallu i reoli'r adnoddau VPC canlynol:

  • prosiectau a'u cwotâu;
  • defnyddwyr, eu rolau a'u tocynnau;
  • is-rwydweithiau cyhoeddus, gan gynnwys traws-ranbarthol a VRRP;
  • trwyddedau meddalwedd.

Mae'r darparwr yn defnyddio ein llyfrgell Go gyhoeddus i weithio gyda'r API VPC. Mae’r llyfrgell a’r darparwr ei hun yn ffynhonnell agored, a gwneir eu datblygiad ar Github:

I reoli adnoddau cwmwl eraill, megis peiriannau rhithwir, disgiau, clystyrau Kubernetes, gallwch ddefnyddio'r darparwr OpenStack Terraform. Mae dogfennaeth swyddogol ar gyfer y ddau ddarparwr ar gael trwy'r dolenni canlynol:

Dechrau Arni

I ddechrau, mae angen i chi osod Terraform (gellir dod o hyd i gyfarwyddiadau a dolenni i becynnau gosod yn gwefan swyddogol).

I weithredu, mae angen allwedd API Selectel ar y darparwr, sy'n cael ei greu yn paneli rheoli cyfrif.

Mae maniffestau ar gyfer gweithio gyda Selectel yn cael eu creu gan ddefnyddio Terraform neu gan ddefnyddio set o enghreifftiau parod sydd ar gael yn ein cadwrfa Github: terraform-enghreifftiau.

Mae'r ystorfa gydag enghreifftiau wedi'i rhannu'n ddau gyfeiriadur:

  • modiwlau, sy'n cynnwys modiwlau bach y gellir eu hailddefnyddio sy'n cymryd set o baramedrau fel mewnbwn ac yn rheoli set fach o adnoddau;
  • enghreifftiau, yn cynnwys enghreifftiau o set gyflawn o fodiwlau cydgysylltiedig.

Ar ôl gosod Terraform, creu allwedd API Selectel ac ymgyfarwyddo â'r enghreifftiau, gadewch i ni symud ymlaen i enghreifftiau ymarferol.

Enghraifft o greu gweinydd gyda disg lleol

Edrychwn ar enghraifft o greu prosiect, defnyddiwr â rôl a pheiriant rhithwir gyda disg lleol: terraform-examples/examples/vpc/server_local_root_disk.

Mewn ffeil vars.tf disgrifir yr holl baramedrau a ddefnyddir wrth alw modiwlau. Mae gan rai ohonynt werthoedd rhagosodedig, er enghraifft, bydd y gweinydd yn cael ei greu yn y parth ru- 3a gyda'r ffurfweddiad canlynol:

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"
}

Mewn ffeil prif.tf Mae darparwr Selectel wedi'i gychwyn:

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

Mae'r ffeil hon hefyd yn cynnwys y gwerth rhagosodedig ar gyfer yr allwedd SSH a fydd yn cael ei osod ar y gweinydd:

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

Os oes angen, gallwch nodi allwedd gyhoeddus wahanol. Nid oes rhaid nodi'r allwedd fel llwybr ffeil; gallwch hefyd ychwanegu'r gwerth fel llinyn.

Ymhellach yn y ffeil hon mae'r modiwlau'n cael eu lansio prosiect_gyda_defnyddiwr и gweinydd_local_root_disk, sy'n rheoli'r adnoddau angenrheidiol.

Gadewch i ni edrych ar y modiwlau hyn yn fwy manwl.

Creu prosiect a defnyddiwr â rôl

Mae'r modiwl cyntaf yn creu prosiect a defnyddiwr sydd â rôl yn y prosiect hwnnw: terraform-examples/modules/vpc/project_with_user.

Bydd y defnyddiwr a grëwyd yn gallu mewngofnodi i OpenStack a rheoli ei adnoddau. Mae'r modiwl yn syml ac yn rheoli tri endid yn unig:

  • selectel_vpc_prosiect_v2,
  • selectel_vpc_user_v2,
  • selectel_vpc_rôl_v2.

Creu gweinydd rhithwir gyda disg lleol

Mae'r ail fodiwl yn ymdrin â rheoli gwrthrychau OpenStack, sy'n angenrheidiol i greu gweinydd gyda disg lleol.

Dylech dalu sylw i rai o'r dadleuon a nodir yn y modiwl hwn ar gyfer yr adnodd openstack_compute_instance_v2:

resource "openstack_compute_instance_v2" "instance_1" {
  ...

  lifecycle {
    ignore_changes = ["image_id"]
  }

  vendor_options {
    ignore_resize_confirmation = true
  }
}

ddadl anwybyddu_newidiadau yn eich galluogi i anwybyddu newidiadau priodoledd id ar gyfer y ddelwedd a ddefnyddiwyd i greu'r peiriant rhithwir. Yn y gwasanaeth VPC, mae'r rhan fwyaf o ddelweddau cyhoeddus yn cael eu diweddaru'n awtomatig unwaith yr wythnos ac ar yr un pryd eu id hefyd newidiadau. Mae hyn oherwydd hynodion y gydran OpenStack - Cipolwg, lle mae delweddau'n cael eu hystyried yn endidau na ellir eu cyfnewid.

Os ydych chi'n creu neu'n addasu gweinydd neu ddisg sy'n bodoli eisoes, mae hynny'n ddadl delwedd_id yn cael ei ddefnyddio id delwedd gyhoeddus, yna ar ôl i'r ddelwedd honno gael ei diweddaru, bydd rhedeg maniffest Terraform eto yn ail-greu'r gweinydd neu'r ddisg. Defnyddio dadl anwybyddu_newidiadau yn eich galluogi i osgoi sefyllfa o'r fath.

Nodyn: dadl anwybyddu_newidiadau ymddangosodd yn Terraform amser maith yn ôl: tynnu#2525.

ddadl anwybyddwch_newid maint_cadarnhad sydd ei angen i newid maint disg lleol, creiddiau, neu gof gweinydd yn llwyddiannus. Gwneir newidiadau o'r fath trwy gydran OpenStack Nova gan ddefnyddio cais newid maint. Nova rhagosodedig ar ôl cais newid maint yn rhoi'r gweinydd mewn statws gwirio_newid maint ac yn aros am gadarnhad ychwanegol gan y defnyddiwr. Fodd bynnag, gellir newid yr ymddygiad hwn fel nad yw Nova yn aros am gamau gweithredu ychwanegol gan y defnyddiwr.

Mae'r ddadl benodedig yn caniatáu i Terraform beidio ag aros am y statws gwirio_newid maint i'r gweinydd a byddwch yn barod i'r gweinydd fod mewn statws gweithredol ar ôl newid ei baramedrau. Mae'r ddadl ar gael o fersiwn 1.10.0 o'r darparwr OpenStack Terraform: tynnu#422.

Creu Adnoddau

Cyn rhedeg y maniffestau, nodwch, yn ein hesiampl, bod dau ddarparwr gwahanol yn cael eu lansio, ac mae'r darparwr OpenStack yn dibynnu ar adnoddau'r darparwr Selectel, oherwydd heb greu defnyddiwr yn y prosiect, mae'n amhosibl rheoli'r gwrthrychau sy'n perthyn iddo . Yn anffodus, am yr un rheswm ni allwn redeg y gorchymyn yn unig terraform yn berthnasol tu mewn i'n hesiampl. Mae angen i ni wneud yn gyntaf cymhwyso ar gyfer modiwl prosiect_gyda_defnyddiwr ac wedi hyny am bob peth arall.

Nodyn: Nid yw'r mater hwn wedi'i ddatrys eto yn Terraform, gallwch ddilyn y drafodaeth ar Github yn rhifyn#2430 и rhifyn#4149.

I greu adnoddau, ewch i'r cyfeiriadur terraform-examples/examples/vpc/server_local_root_disk, dylai ei gynnwys fod fel hyn:

$ ls
README.md	   main.tf		vars.tf

Rydym yn cychwyn y modiwlau gan ddefnyddio'r gorchymyn:

$ terraform init

Mae'r allbwn yn dangos bod Terraform yn lawrlwytho'r fersiynau diweddaraf o'r darparwyr y mae'n eu defnyddio ac yn gwirio'r holl fodiwlau a ddisgrifir yn yr enghraifft.

Yn gyntaf, gadewch i ni gymhwyso'r modiwl prosiect_gyda_defnyddiwr. Mae hyn yn gofyn am basio gwerthoedd â llaw ar gyfer newidynnau nad ydynt wedi'u gosod:

  • sel_cyfrif gyda'ch rhif cyfrif Selectel;
  • sel_tocyn gyda'ch allwedd ar gyfer Selectel API;
  • defnyddiwr_cyfrinair gyda chyfrinair ar gyfer y defnyddiwr OpenStack.

Rhaid cymryd y gwerthoedd ar gyfer y ddau newidyn cyntaf o paneli rheoli.

Ar gyfer y newidyn olaf, gallwch chi ddod o hyd i unrhyw gyfrinair.

I ddefnyddio'r modiwl mae angen i chi ddisodli'r gwerthoedd SEL_ACCOUNT, SEL_TOKEN и USER_PASSWORD rhedeg y gorchymyn:

$ 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

Ar ôl rhedeg y gorchymyn, bydd Terraform yn dangos pa adnoddau y mae am eu creu ac yn gofyn am gadarnhad:

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

Unwaith y bydd y prosiect, defnyddiwr a rôl wedi'u creu, gallwch ddechrau creu'r adnoddau sy'n weddill:

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

Wrth greu adnoddau, rhowch sylw i allbwn Terraform gyda'r cyfeiriad IP allanol lle bydd y gweinydd a grëwyd yn hygyrch:

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

Gallwch weithio gyda'r peiriant rhithwir a grëwyd trwy SSH gan ddefnyddio'r IP penodedig.

Adnoddau Golygu

Yn ogystal â chreu adnoddau trwy Terraform, gellir eu haddasu hefyd.

Er enghraifft, gadewch i ni gynyddu nifer y creiddiau a chof ar gyfer ein gweinydd trwy newid y gwerthoedd ar gyfer y paramedrau gweinydd_vcpus и gweinydd_ram_mb mewn ffeil enghreifftiau/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

Ar ôl hyn, rydym yn gwirio pa newidiadau y bydd hyn yn arwain at ddefnyddio'r gorchymyn canlynol:

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

O ganlyniad, gwnaeth Terraform newid adnoddau openstack_compute_instance_v2 и Openstack_compute_blas_v2.

Sylwch y bydd hyn yn golygu ailgychwyn y peiriant rhithwir a grëwyd.

I gymhwyso'r cyfluniad peiriant rhithwir newydd, defnyddiwch y gorchymyn terraform yn berthnasol, yr ydym eisoes wedi’i lansio’n gynharach.

Bydd yr holl wrthrychau a grëwyd yn cael eu harddangos yn Paneli rheoli VPC:

Darparwr terraform Selectel

Yn ein storfeydd enghreifftiol Gallwch hefyd weld maniffestau ar gyfer creu peiriannau rhithwir gyda gyriannau rhwydwaith.

Enghraifft o greu clwstwr Kubernetes

Cyn i ni symud ymlaen at yr enghraifft nesaf, byddwn yn glanhau'r adnoddau a grëwyd gennym yn gynharach. I wneud hyn yng ngwraidd y prosiect terraform-examples/examples/vpc/server_local_root_disk Gadewch i ni redeg y gorchymyn i ddileu gwrthrychau 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

Yna rhedeg y gorchymyn i glirio gwrthrychau API Selectel VPC:

$ 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

Yn y ddau achos, bydd angen i chi gadarnhau dileu'r holl wrthrychau:

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

Mae'r enghraifft ganlynol yn y cyfeiriadur terraform-enghreifftiau/enghreifftiau/vpc/kubernetes_cluster.

Mae'r enghraifft hon yn creu prosiect, defnyddiwr sydd â rôl yn y prosiect, ac yn codi un clwstwr Kubernetes. Mewn ffeil vars.tf gallwch weld gwerthoedd diofyn, megis nifer y nodau, eu nodweddion, fersiwn Kubernetes, ac ati.

Er mwyn creu adnoddau tebyg i'r enghraifft gyntaf, yn gyntaf oll byddwn yn dechrau cychwyn modiwlau a chreu adnoddau modiwl prosiect_gyda_defnyddiwrac yna creu popeth arall:

$ 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

Byddwn yn trosglwyddo creu a rheoli clystyrau Kubernetes trwy gydran OpenStack Magnum. Gallwch ddarganfod mwy am sut i weithio gyda chlwstwr yn un o'n erthyglau blaenorolyn ogystal â sylfaen wybodaeth.

Wrth baratoi'r clwstwr, bydd disgiau a pheiriannau rhithwir yn cael eu creu a bydd yr holl gydrannau angenrheidiol yn cael eu gosod. Mae paratoi yn cymryd tua 4 munud, ac yn ystod yr amser hwn bydd Terraform yn arddangos negeseuon fel:

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

Unwaith y bydd y gosodiad wedi'i gwblhau, bydd Terraform yn nodi bod y clwstwr yn barod ac yn arddangos ei 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.

Rheoli'r clwstwr Kubernetes a grëwyd trwy'r cyfleustodau ciwctl mae angen i chi gael y ffeil mynediad clwstwr. I wneud hyn, ewch i'r prosiect a grëwyd trwy Terraform yn y rhestr o brosiectau yn eich cyfrif:

Darparwr terraform Selectel

Nesaf, dilynwch y ddolen fel xxxxx.selvpc.rusy'n ymddangos o dan enw'r prosiect:

Darparwr terraform Selectel

I gael gwybodaeth mewngofnodi, defnyddiwch yr enw defnyddiwr a'r cyfrinair a greoch trwy Terraform. Os nad ydych wedi twyllo vars.tf neu prif.tf er enghraifft, bydd gan y defnyddiwr yr enw tf_defnyddiwr. Rhaid i chi ddefnyddio gwerth y newidyn fel y cyfrinair TF_VAR_user_password, a nodwyd wrth gychwyn terraform yn berthnasol yn gynharach.

Y tu mewn i'r prosiect mae angen i chi fynd i'r tab Kubernetes:

Darparwr terraform Selectel

Dyma lle mae'r clwstwr a grëwyd trwy Terraform wedi'i leoli. Lawrlwythwch ffeil ar gyfer ciwctl gallwch chi ar y tab “Mynediad”:

Darparwr terraform Selectel

Mae cyfarwyddiadau gosod wedi'u lleoli ar yr un tab. ciwctl a defnydd o'r llwytho i lawr config.yaml.

Ar ôl lansio ciwctl a gosod y newidyn amgylchedd KUBECONFIG gallwch ddefnyddio 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

Gellir newid nifer y nodau clwstwr yn hawdd trwy Terraform.
Mewn ffeil prif.tf nodir y gwerth canlynol:

cluster_node_count = "${var.cluster_node_count}"

Amnewidir y gwerth hwn o vars.tf:

variable "cluster_node_count" {
default = 2
}

Gallwch newid naill ai'r gwerth diofyn yn vars.tf, neu nodi'r gwerth gofynnol yn uniongyrchol yn prif.tf:

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

I gymhwyso'r newidiadau, fel yn achos yr enghraifft gyntaf, defnyddiwch y gorchymyn terraform yn berthnasol:

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

Pan fydd nifer y nodau'n newid, bydd y clwstwr yn parhau i fod ar gael. Ar ôl ychwanegu nod trwy Terraform, gallwch ei ddefnyddio heb gyfluniad ychwanegol:

$ 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

Casgliad

Yn yr erthygl hon daethom yn gyfarwydd â'r prif ffyrdd o weithio gyda nhw "Cwmwl preifat rhithwir" trwy Terraform. Byddwn yn falch os ydych chi'n defnyddio darparwr swyddogol Selectel Terraform ac yn darparu adborth.

Gellir adrodd am unrhyw fygiau a geir yn y darparwr Selectel Terraform trwy Materion Github.

Ffynhonnell: hab.com

Ychwanegu sylw