Nedejna fornitur uffiċjali ta’ Terraform biex naħdmu ma’ Selectel. Dan il-prodott jippermetti lill-utenti biex jimplimentaw bis-sħiħ il-ġestjoni tar-riżorsi permezz tal-metodoloġija Infrastructure-as-code.
Il-fornitur bħalissa jappoġġja l-ġestjoni tar-riżorsi tas-servizz "Sħaba privata virtwali" (minn hawn 'il quddiem imsejħa VPC). Fil-futur, qed nippjanaw li nżidu l-ġestjoni tar-riżorsi għal servizzi oħra pprovduti minn Selectel.
Kif diġà taf, is-servizz VPC huwa mibni fuq OpenStack. Madankollu, minħabba l-fatt li OpenStack ma jipprovdix għodod indiġeni biex iservi l-cloud pubbliku, implimentajna l-funzjonalità nieqsa f'sett ta 'APIs addizzjonali li jissimplifikaw il-ġestjoni ta' oġġetti komposti kumplessi u jagħmlu x-xogħol aktar konvenjenti. Xi wħud mill-funzjonalità disponibbli f'OpenStack hija magħluqa mill-użu dirett, iżda hija disponibbli permezz API tagħna.
Il-fornitur Selectel Terraform issa jinkludi l-abbiltà li jimmaniġġja r-riżorsi tal-VPC li ġejjin:
proġetti u l-kwoti tagħhom;
utenti, ir-rwoli u t-tokens tagħhom;
subnets pubbliċi, inklużi transreġjonali u VRRP;
liċenzji tas-softwer.
Il-fornitur juża l-librerija pubblika Go tagħna biex jaħdem mal-API VPC. Kemm il-librerija kif ukoll il-fornitur innifsu huma open-source, l-iżvilupp tagħhom jitwettaq fuq Github:
Biex timmaniġġja riżorsi oħra tas-sħab, bħal magni virtwali, diski, clusters Kubernetes, tista 'tuża l-fornitur OpenStack Terraform. Dokumentazzjoni uffiċjali għaż-żewġ fornituri hija disponibbli fil-links li ġejjin:
Manifesti biex taħdem ma 'Selectel huma maħluqa bl-użu ta' Terraform jew bl-użu ta 'sett ta' eżempji lesti li huma disponibbli fir-repożitorju Github tagħna: terraform-eżempji.
Ir-repożitorju b'eżempji huwa maqsum f'żewġ direttorji:
moduli, li fihom moduli żgħar li jistgħu jerġgħu jintużaw li jieħdu sett ta' parametri bħala input u jimmaniġġjaw sett żgħir ta' riżorsi;
eżempji, li jkun fih eżempji ta' sett komplut ta' moduli interkonnessi.
Wara li tinstalla Terraform, toħloq ċavetta Selectel API u tiffamiljarizza ruħek mal-eżempji, ejja ngħaddu għal eżempji prattiċi.
Fil-fajl vars.tf il-parametri kollha li se jintużaw meta ssejjaħ moduli huma deskritti. Xi wħud minnhom għandhom valuri awtomatiċi, pereżempju, is-server se jinħoloq fiż-żona ru-3a bil-konfigurazzjoni li ġejja:
Jekk meħtieġ, tista' tispeċifika ċavetta pubblika differenti. Iċ-ċavetta m'għandhiex għalfejn tiġi speċifikata bħala mogħdija tal-fajl; tista 'wkoll iżżid il-valur bħala string.
Aktar f'dan il-fajl il-moduli huma mnedija project_with_user и server_local_root_disk, li jimmaniġġjaw ir-riżorsi meħtieġa.
argument injora_bidliet jippermettilek tinjora l-bidliet fl-attributi id għall-immaġni użata biex tinħoloq il-magna virtwali. Fis-servizz VPC, il-biċċa l-kbira tal-immaġini pubbliċi jiġu aġġornati awtomatikament darba fil-ġimgħa u fl-istess ħin tagħhom id jinbidel ukoll. Dan huwa dovut għall-partikolaritajiet tal-komponent OpenStack - Glance, li fih l-immaġini huma meqjusa bħala entitajiet immutabbli.
Jekk qed toħloq jew timmodifika server eżistenti jew disk li għandu bħala argument image_id użati id immaġni pubblika, imbagħad wara li dik l-immaġni tiġi aġġornata, it-tħaddim tal-manifest Terraform mill-ġdid se jirrikreja s-server jew id-disk. Bl-użu ta' argument injora_bidliet jippermettilek tevita sitwazzjoni bħal din.
Nota: argument injora_bidliet deher f'Terraform żmien twil ilu: iġbed#2525.
argument ignore_resize_confirmation meħtieġa biex tibdel id-daqs tad-disk lokali, cores, jew memorja tas-server. Tibdil bħal dan isir permezz tal-komponent OpenStack Nova billi tuża talba resize. Default Nova wara talba resize ipoġġi s-server fi stat verify_resize u jistenna għal konferma addizzjonali mill-utent. Madankollu, din l-imġieba tista 'tinbidel sabiex Nova ma tistennax għal azzjonijiet addizzjonali mill-utent.
L-argument speċifikat jippermetti lil Terraform li ma jistenna l-istatus verify_resize għas-server u tkun ippreparata biex is-server ikun fi stat attiv wara li jbiddel il-parametri tiegħu. L-argument huwa disponibbli mill-verżjoni 1.10.0 tal-fornitur OpenStack Terraform: iġbed#422.
Ħolqien tar-Riżorsi
Qabel ma tmexxi l-manifesti, jekk jogħġbok innota li fl-eżempju tagħna, żewġ fornituri differenti huma mnedija, u l-fornitur OpenStack jiddependi fuq ir-riżorsi tal-fornitur Selectel, peress li mingħajr ma jinħoloq utent fil-proġett, huwa impossibbli li timmaniġġja l-oġġetti li jappartjenu għalih. . Sfortunatament, għall-istess raġuni ma nistgħux inmexxu l-kmand biss terraform japplikaw ġewwa l-eżempju tagħna. L-ewwel irridu nagħmlu japplikaw għall-modulu project_with_user u wara għal kull ħaġa oħra.
Nota: Din il-kwistjoni għadha mhix solvuta f'Terraform, tista 'ssegwi d-diskussjoni fuq Github fuq ħarġa#2430 и ħarġa#4149.
Wara li jmexxi l-kmand, Terraform se juri liema riżorsi trid toħloq u titlob konferma:
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
Ladarba l-proġett, l-utent u r-rwol ikunu nħolqu, tista’ tibda toħloq ir-riżorsi li jifdal:
Tista 'taħdem mal-magna virtwali maħluqa permezz ta' SSH billi tuża l-IP speċifikat.
Riżorsi Editjar
Minbarra l-ħolqien ta 'riżorsi permezz ta' Terraform, jistgħu wkoll jiġu modifikati.
Pereżempju, ejja nżidu n-numru ta 'qlub u memorja għas-server tagħna billi nibdlu l-valuri għall-parametri server_vcpus и server_ram_mb fil-fajl eżempji/vpc/server_local_root_disk/main.tf:
Fil-tagħna repożitorji ta' eżempju Tista 'tara wkoll manifesti għall-ħolqien ta' magni virtwali b'drives tan-netwerk.
Eżempju tal-ħolqien ta' cluster Kubernetes
Qabel ma ngħaddu għall-eżempju li jmiss, aħna ser inaddfu r-riżorsi li ħloqna qabel. Biex tagħmel dan fl-għerq tal-proġett terraform-examples/examples/vpc/server_local_root_disk Ejja nħaddmu l-kmand biex tħassar l-oġġetti OpenStack:
Fiż-żewġ każijiet, ser ikollok bżonn tikkonferma t-tħassir tal-oġġetti kollha:
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
Dan l-eżempju joħloq proġett, utent bi rwol fil-proġett, u jqajjem cluster wieħed ta' Kubernetes. Fil-fajl vars.tf tista 'tara valuri default, bħan-numru ta' nodi, il-karatteristiċi tagħhom, il-verżjoni Kubernetes, eċċ.
Biex noħolqu riżorsi simili għall-ewwel eżempju, l-ewwelnett se nibdew inizjalizzaw moduli u noħolqu riżorsi tal-moduli project_with_useru mbagħad toħloq kull ħaġa oħra:
Se nittrasferixxu l-ħolqien u l-ġestjoni ta 'clusters ta' Kubernetes permezz tal-komponent OpenStack Magnum. Tista' ssir taf aktar dwar kif taħdem ma' cluster f'wieħed minn tagħna artikoli preċedentikif ukoll bażi ta’ għarfien.
Meta tħejji l-cluster, se jinħolqu diski u magni virtwali u se jiġu installati l-komponenti kollha meħtieġa. Il-preparazzjoni tieħu madwar 4 minuti, li matulhom Terraform se juri messaġġi bħal:
module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Still creating... (3m0s elapsed)
Ladarba l-installazzjoni tkun kompluta, Terraform se jindika li l-cluster huwa lest u juri l-ID tiegħu:
Biex timmaniġġja l-cluster Kubernetes maħluq permezz tal-utilità kubectl għandek bżonn tikseb il-fajl ta 'aċċess għall-cluster. Biex tagħmel dan, mur fil-proġett maħluq permezz ta’ Terraform fil-lista ta’ proġetti fil-kont tiegħek:
Sussegwentement, segwi l-link simili xxxxxx.selvpc.ruli jidher taħt l-isem tal-proġett:
Għal informazzjoni ta' login, uża l-isem tal-utent u l-password li ħloqt permezz ta' Terraform. Jekk ma qerqtx vars.tf jew main.tf għall-eżempju tagħna, l-utent ikollu l-isem tf_user. Trid tuża l-valur tal-varjabbli bħala l-password TF_VAR_user_password, li kien speċifikat fl-istartjar terraform japplikaw qabel.
Ġewwa l-proġett għandek bżonn tmur fit-tab Kubernetes:
Dan huwa fejn jinsab il-cluster maħluq permezz ta' Terraform. Niżżel il-fajl għal kubectl tista' fuq it-tab "Aċċess":
L-istruzzjonijiet tal-installazzjoni jinsabu fuq l-istess tab. kubectl u l-użu tal-downloaded config.yaml.
Wara t-tnedija kubectl u l-issettjar tal-varjabbli ambjentali KUBECONFIG tista' tuża Kubernetes:
Meta n-numru ta 'nodi jinbidel, il-cluster jibqa' disponibbli. Wara li żżid node permezz Terraform, tista 'tużah mingħajr konfigurazzjoni addizzjonali:
$ 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
Konklużjoni
F'dan l-artikolu sirna familjari mal-modi ewlenin kif taħdem magħhom "Sħaba privata virtwali" permezz Terraform. Inkunu ferħanin jekk tuża l-fornitur uffiċjali ta’ Selectel Terraform u tipprovdi feedback.
Kwalunkwe bug misjuba fil-fornitur Selectel Terraform jista 'jiġi rrappurtat permezz Kwistjonijiet Github.