Me pêşkêşvanek fermî ya Terraform da destpêkirin ku bi Selectel re bixebite. Ev hilber rê dide bikarhêneran ku bi rêgeznameya Binesaziya-wek kodê bi tevahî rêveberiya çavkaniyê bicîh bikin.
Pêşkêşkar niha rêveberiya çavkaniya karûbarê piştgirî dike "Ewra taybet a virtual" (li vir wekî VPC tê binav kirin). Di pêşerojê de, em plan dikin ku rêveberiya çavkaniyê ji bo karûbarên din ên ku ji hêla Selectel ve têne peyda kirin zêde bikin.
Wekî ku hûn jixwe dizanin, karûbarê VPC li ser OpenStack-ê hatî çêkirin. Lêbelê, ji ber ku OpenStack ji bo xizmetkirina ewrê gelemperî amûrên xwemalî peyda nake, me fonksiyona wenda di komek API-yên zêde de bicîh kir ku rêveberiya tiştên tevlihev ên tevlihev hêsan dike û kar hêsantir dike. Hin fonksiyonên ku di OpenStack de hene ji karanîna rasterast girtî ne, lê bi navgîniyê ve têne peyda kirin API-ya me.
Pêşkêşvanê Selectel Terraform naha şiyana birêvebirina çavkaniyên VPC yên jêrîn vedigire:
proje û kotayên wan;
bikarhêner, rol û nîşaneyên wan;
subnets giştî, di nav de cross-herêmî û VRRP;
lîsansên nivîsbariyê.
Pêşkêşkar pirtûkxaneya meya Go ya giştî bikar tîne da ku bi VPC API-yê re bixebite. Hem pirtûkxane û hem jî pêşkêşker bixwe çavkaniya vekirî ne, pêşkeftina wan li ser Github pêk tê:
Ji bo birêvebirina çavkaniyên din ên ewr, wek makîneyên virtual, dîskên, komên Kubernetes, hûn dikarin pêşkêşvanê OpenStack Terraform bikar bînin. Belgeyên fermî ji bo her du pêşkêşkaran li ser lînkên jêrîn hene:
Ji bo ku hûn dest pê bikin, hûn hewce ne ku Terraform saz bikin (rêber û girêdanên pakêtên sazkirinê li vir têne dîtin malpera fermî).
Ji bo xebitandinê, pêşkêşker mifteyek API-ya Selectel hewce dike, ku tê de hatî çêkirin panelên kontrola hesabê.
Manîfestên ji bo xebata bi Selectel re bi karanîna Terraform an jî bi karanîna komek nimûneyên amade yên ku di depoya meya Github de hene têne afirandin: terraform-nimûne.
Depoya bi mînakan li du pelrêçan tê dabeş kirin:
modules, di nav xwe de modulên piçûk ên ji nû ve bikar anîn hene ku komek pîvanan wekî têketinê digirin û komek piçûk a çavkaniyan îdare dikin;
nimûne, mînakên komek bêkêmasî ya modulên bi hev ve girêdayî hene.
Piştî sazkirina Terraform, afirandina mifteyek Selectel API û naskirina xwe bi mînakan, em biçin ser mînakên pratîk.
Di pelê de vars.tf hemî pîvanên ku dê di dema banga modulan de werin bikar anîn têne diyar kirin. Hin ji wan nirxên xwerû hene, ji bo nimûne, server dê li herêmê were afirandin ru-3a bi veavakirina jêrîn:
Ger hewce be, hûn dikarin mifteyek gelemperî ya cûda diyar bikin. Ne hewce ye ku mift wekî riya pelê were destnîşankirin; hûn dikarin nirxê wekî rêzek jî lê zêde bikin.
Zêdetir di vê pelê de modul têne destpêkirin project_with_user и server_local_root_disk, ku çavkaniyên pêwîst birêve dibin.
Bersivk ignore_changes destûrê dide te ku hûn guhartinên taybetmendiyê paşguh bikin id ji bo wêneyê ku ji bo afirandina makîneya virtual tê bikar anîn. Di karûbarê VPC de, piraniya wêneyên gelemperî heftê carekê bixweber têne nûve kirin û di heman demê de wan id jî diguhere. Ev ji ber taybetmendiyên beşê OpenStack - Glance ye, ku tê de wêne hebûnên neguhêrbar têne hesibandin.
Ger hûn serverek an dîskek heyî ya ku wekî argumanek heye diafirînin an diguhezînin image_id bikar anîn ji hêla id wêneya giştî, dûv re piştî ku ew wêne were nûve kirin, manîfestoya Terraform dîsa dê server an dîskê ji nû ve biafirîne. Bikaranîna argumanek ignore_changes destûrê dide te ku ji rewşek weha dûr bikevin.
Nîşe: arguman ignore_changes demeke dirêj berê di Terraform de xuya bû: vekişîne # 2525.
Bersivk ignore_resize_confirmation pêdivî ye ku bi serfirazî mezinahiya dîska herêmî, naverok, an bîranîna serverê bi serfirazî veguherîne. Guhertinên weha bi navgîniya hêmanek OpenStack Nova bi karanîna daxwazek têne çêkirin resize. Piştî daxwazê Nova standard resize serverê dixe statûyê verify_resize û li benda pejirandina zêde ji bikarhêner e. Lêbelê, ev tevger dikare were guheztin da ku Nova li benda kiryarên zêde ji bikarhêner nemîne.
Argumana diyarkirî dihêle Terraform li benda statûyê nemîne verify_resize ji bo serverê û ji bo serverê piştî guheztina pîvanên xwe di rewşek çalak de amade bibin. Argument ji guhertoya 1.10.0 ya pêşkêşvanê OpenStack Terraform heye: vekişîne # 422.
Çêkirina Çavkaniyan
Berî ku manîfestoyan bimeşînin, ji kerema xwe bala xwe bidin ku di mînaka me de, du pêşkêşkerên cihêreng têne destpêkirin, û pêşkêşkarê OpenStack bi çavkaniyên pêşkêşvanê Selectel ve girêdayî ye, ji ber ku bêyî afirandina bikarhênerek di projeyê de, ne gengaz e ku meriv tiştên ku jê re girêdayî ne were rêvebirin. . Mixabin, ji ber heman sedemê em nekarin tenê fermanê bimeşînin terraform sepandin di hundurê mînaka me de. Pêşî divê em bikin bikaranîn ji bo module project_with_user û piştî wê ji bo her tiştê din.
Nîşe: Ev pirsgirêk hîn di Terraform de nehatiye çareser kirin, hûn dikarin li ser Github nîqaşê bişopînin hejmar#2430 и hejmar#4149.
Hilber destnîşan dike ku Terraform guhertoyên herî dawî yên pêşkêşkerên ku ew bikar tîne dadixe û hemî modulên ku di nimûneyê de hatine destnîşan kirin kontrol dike.
Pêşî em modulê bicîh bînin project_with_user. Ev hewce dike ku bi destan nirxan ji bo guhêrbarên ku nehatine danîn derbas bikin:
sel_account bi hejmara hesabê xweya Selectel;
sel_token bi mifteya xwe ya ji bo Selectel API;
user_password bi şîfreyek ji bo bikarhênerê OpenStack.
Nirxên du guherbarên pêşîn divê ji wan bêne girtin panelên kontrolê.
Ji bo guhêrbara paşîn, hûn dikarin her şîfreyekê derxînin.
Ji bo karanîna modulê hûn hewce ne ku nirxan biguhezînin SEL_ACCOUNT, SEL_TOKEN и USER_PASSWORD fermanê dimeşîne:
Piştî xebitandina fermanê, Terraform dê nîşan bide ka kîjan çavkaniyan dixwaze biafirîne û piştrastkirinê bixwaze:
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
Piştî ku proje, bikarhêner û rol hatin afirandin, hûn dikarin dest bi afirandina çavkaniyên mayî bikin:
Hûn dikarin bi makîneya virtual ya hatî afirandin re bi navgîniya SSH-ê bi karanîna IP-ya diyarkirî re bixebitin.
Çavkaniyên Editing
Ji bilî afirandina çavkaniyan bi rêya Terraform, ew jî dikarin bêne guhertin.
Mînakî, em bi guheztina nirxên pîvanan re ji bo servera xwe hejmara naverok û bîra zêde bikin. server_vcpus и server_ram_mb di dosyayê de mînakên/vpc/server_local_root_disk/main.tf:
Vîdeo depoyên nimûne Her weha hûn dikarin ji bo afirandina makîneyên virtual bi ajokarên torê re manîfestoyan bibînin.
Mînaka afirandina komek Kubernetes
Berî ku em derbasî mînaka din bibin, em ê çavkaniyên ku me berê afirandine paqij bikin. Ji bo vê yekê di bingeha projeyê de bikin terraform-nimûne/nimûne/vpc/server_local_root_disk Ka em emrê jêbirina tiştên OpenStack bimeşînin:
Di her du rewşan de, hûn ê hewce bikin ku jêbirina hemî tiştan piştrast bikin:
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
Ev mînak projeyek, bikarhênerek ku di projeyê de rolek heye diafirîne, û komek Kubernetes radike. Di pelê de vars.tf hûn dikarin nirxên xwerû, wekî hejmara girêkan, taybetmendiyên wan, guhertoya Kubernetes, hwd, bibînin.
Ji bo afirandina çavkaniyên mîna mînaka yekem, berî her tiştî em ê dest bi destpêkirina modulan bikin û çavkaniyên modulê biafirînin project_with_userû paşê her tiştê din çêbikin:
Em ê afirandin û rêveberiya komên Kubernetes bi navgîniya beşê OpenStack Magnum veguhezînin. Hûn dikarin di yek ji me de bêtir fêr bibin ka meriv çawa bi komekê re dixebite gotarên berêû her weha bingeha zanînê.
Dema ku komê were amadekirin, dê dîsk û makîneyên virtual werin afirandin û hemî pêkhateyên pêwîst dê bêne saz kirin. Amadekirin bi qasî 4 hûrdem digire, di vê demê de Terraform dê peyamên wekî:
module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Still creating... (3m0s elapsed)
Piştî ku sazkirin qediya, Terraform dê destnîşan bike ku kom amade ye û nasnameya xwe nîşan bide:
Ji bo birêvebirina koma Kubernetes a hatî afirandin bi navgîniyê ve kubectl hûn hewce ne ku pelê gihîştina komê bistînin. Ji bo vê yekê, biçin projeya ku bi Terraform ve hatî afirandin di navnîşa projeyên di hesabê xwe de:
Piştre, lînka mîna bişopînin xxxxxx.selvpc.ruku li jêr navê projeyê xuya dike:
Ji bo agahdariya têketinê, navê bikarhêner û şîfreya ku we bi Terraform ve afirandiye bikar bînin. Heger te xapandine vars.tf an sereke.tf ji bo nimûneya me, bikarhêner dê navê xwe hebe tf_user. Divê hûn nirxa guherbarê wekî şîfre bikar bînin TF_VAR_user_password, ku di destpêkê de hate diyarkirin terraform sepandin zûtir
Di hundurê projeyê de hûn hewce ne ku biçin tabê Kubernetes:
Li vir komika ku bi Terraform ve hatî afirandin li vir e. Ji bo pelê dakêşin kubectl hûn dikarin li ser tabê "Gihîştin":
Talîmatên sazkirinê li ser heman tabloyê ne. kubectl û karanîna dakêşandî config.yaml.
Piştî destpêkirinê kubectl û danîna guherbara jîngehê KUBECONFIG Hûn dikarin Kubernetes bikar bînin:
Dema ku hejmara girêkan biguhere, kom dê berdest bimîne. Piştî ku girêkek bi Terraform ve zêde kirin, hûn dikarin wê bêyî veavakirina zêde bikar bînin:
$ 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
encamê
Di vê gotarê de em bi awayên sereke yên xebatê re nas kirin "Ewra taybet a virtual" bi rêya Terraform. Ger hûn pêşkêşkara fermî ya Selectel Terraform bikar bînin û bersivê bidin, em ê kêfxweş bibin.
Her xeletiyên ku di pêşkêşvanê Selectel Terraform de têne dîtin dikarin bi rê ve werin rapor kirin Pirsgirêkên Github.