Naglunsad kami usa ka opisyal nga tighatag sa Terraform aron magtrabaho kauban ang Selectel. Kini nga produkto nagtugot sa mga tiggamit sa hingpit nga pagpatuman sa pagdumala sa kapanguhaan pinaagi sa Infrastructure-as-code methodology.
Gisuportahan karon sa provider ang pagdumala sa kapanguhaan sa serbisyo "Virtual pribadong panganod" (pagkahuman niini gitawag nga VPC). Sa umaabot, nagplano kami nga idugang ang pagdumala sa kapanguhaan alang sa ubang mga serbisyo nga gihatag sa Selectel.
Sama sa nahibal-an na nimo, ang serbisyo sa VPC gitukod sa OpenStack. Bisan pa, tungod sa kamatuoran nga ang OpenStack wala maghatag mga lumad nga himan alang sa pagserbisyo sa publiko nga panganod, gipatuman namon ang nawala nga pagpaandar sa usa ka set sa dugang nga mga API nga nagpasimple sa pagdumala sa komplikado nga mga butang nga gisagol ug gihimo nga labi ka kombenyente ang trabaho. Ang pipila sa mga gamit nga magamit sa OpenStack sirado gikan sa direkta nga paggamit, apan magamit pinaagi sa atong API.
Ang Selectel Terraform provider karon naglakip sa abilidad sa pagdumala sa mosunod nga VPC resources:
mga proyekto ug ang ilang mga quota;
tiggamit, ilang mga tahas ug mga token;
publiko nga mga subnet, lakip ang cross-regional ug VRRP;
mga lisensya sa software.
Gigamit sa provider ang among public Go library aron magtrabaho uban ang VPC API. Ang librarya ug ang provider mismo bukas nga gigikanan, ang ilang pag-uswag gihimo sa Github:
Aron madumala ang ubang mga kapanguhaan sa panganod, sama sa mga virtual machine, disk, Kubernetes clusters, mahimo nimong gamiton ang OpenStack Terraform provider. Ang opisyal nga dokumentasyon para sa duha ka mga provider anaa sa mosunod nga mga link:
Ang mga manipesto alang sa pagtrabaho kauban ang Selectel gihimo gamit ang Terraform o gamit ang usa ka set sa andam nga gihimo nga mga pananglitan nga magamit sa among Github repository: terraform-mga pananglitan.
Ang repository nga adunay mga pananglitan gibahin sa duha ka mga direktoryo:
Modules, nga adunay gamay nga magamit pag-usab nga mga module nga nagkuha usa ka set sa mga parameter ingon input ug pagdumala sa usa ka gamay nga hugpong sa mga kapanguhaan;
mga ehemplo, nga adunay mga pananglitan sa usa ka kompleto nga hugpong sa mga interconnected modules.
Human ma-install ang Terraform, maghimo usa ka Selectel API key ug pamilyar ang imong kaugalingon sa mga pananglitan, magpadayon kita sa praktikal nga mga pananglitan.
Usa ka pananglitan sa paghimo sa usa ka server nga adunay lokal nga disk
Sa file vars.tf ang tanan nga mga parameter nga gamiton sa pagtawag sa mga module gihulagway. Ang uban niini adunay mga default nga kantidad, pananglitan, ang server himuon sa sona ru-3a uban sa mosunod nga configuration:
Kung gikinahanglan, mahimo nimong itakda ang lain nga yawe sa publiko. Ang yawe dili kinahanglan nga ipiho ingon usa ka agianan sa file; mahimo usab nimo idugang ang kantidad ingon usa ka hilo.
Dugang pa niini nga file ang mga modules gilunsad project_with_user и server_local_root_disk, nga nagdumala sa gikinahanglan nga mga kapanguhaan.
Atong tan-awon kini nga mga module sa mas detalyado.
Ang gibuhat nga tiggamit makahimo sa pag-log in sa OpenStack ug pagdumala sa mga kapanguhaan niini. Ang module yano ug nagdumala lamang sa tulo ka entidad:
pilia ang_vpc_proyekto_v2,
selectel_vpc_user_v2,
selectel_vpc_role_v2.
Paghimo usa ka virtual server nga adunay lokal nga disk
Ang ikaduha nga module naghisgot sa pagdumala sa mga butang sa OpenStack, nga gikinahanglan aron makahimo og server nga adunay lokal nga disk.
Kinahanglan nimong hatagan ug pagtagad ang pipila ka mga argumento nga gipiho niini nga module alang sa kapanguhaan openstack_compute_instance_v2:
argumento ibaliwala_kausaban nagtugot kanimo sa pagbaliwala sa mga kausaban sa hiyas id alang sa imahe nga gigamit sa paghimo sa virtual machine. Sa serbisyo sa VPC, kadaghanan sa publiko nga mga imahe awtomatikong gi-update kausa sa usa ka semana ug sa parehas nga oras ang ilang id nagbag-o usab. Kini tungod sa mga peculiarities sa OpenStack component - Glance, diin ang mga hulagway giisip nga dili mausab nga mga entidad.
Kung ikaw nagmugna o nag-usab sa usa ka kasamtangan nga server o disk nga adunay usa ka argumento image_id gigamit id publiko nga imahe, unya pagkahuman nga ma-update ang imahe, ang pagpadagan sa Terraform manifest pag-usab maghimo pag-usab sa server o disk. Paggamit ug argumento ibaliwala_kausaban nagtugot kanimo sa paglikay sa ingon nga sitwasyon.
Nota: argumento ibaliwala_kausaban nagpakita sa Terraform dugay na ang milabay: pagbira#2525.
argumento ibaliwala_resize_kumpirmasyon gikinahanglan aron malampuson nga mabag-o ang gidak-on sa lokal nga disk, mga core, o memorya sa server. Ang ingon nga mga pagbag-o gihimo pinaagi sa sangkap sa OpenStack Nova gamit ang usa ka hangyo resize. Default nga Nova human sa hangyo resize nagbutang sa server sa status verify_resize ug naghulat alang sa dugang nga kumpirmasyon gikan sa tiggamit. Bisan pa, kini nga pamatasan mahimong mabag-o aron ang Nova dili maghulat alang sa dugang nga mga aksyon gikan sa tiggamit.
Ang espesipikong argumento nagtugot sa Terraform nga dili maghulat sa status verify_resize alang sa server ug pag-andam alang sa server nga naa sa usa ka aktibo nga kahimtang pagkahuman sa pagbag-o sa mga parameter niini. Ang argumento anaa gikan sa bersyon 1.10.0 sa OpenStack Terraform provider: pagbira#422.
Paghimo og mga Kapanguhaan
Sa wala pa ipadagan ang mga manifests, palihug timan-i nga sa among panig-ingnan, duha ka lain-laing mga provider ang gilusad, ug ang OpenStack provider nagdepende sa mga kahinguhaan sa Selectel provider, tungod kay walay paghimo og user sa proyekto, imposible ang pagdumala sa mga butang nga iya niini. . Ikasubo, tungod sa parehas nga hinungdan dili ra naton mahimo ang mando magamit ang terraform sulod sa atong ehemplo. Kinahanglan una natong buhaton magamit alang sa module project_with_user ug pagkahuman niana alang sa tanan nga uban pa.
Mubo nga sulat: Kini nga isyu wala pa masulbad sa Terraform, mahimo nimong sundon ang panaghisgot sa Github sa isyu #2430 и isyu #4149.
Ang output nagpakita nga ang Terraform nag-download sa pinakabag-o nga bersyon sa mga provider nga gigamit niini ug nagsusi sa tanang modules nga gihulagway sa pananglitan.
Una atong gamiton ang module project_with_user. Nanginahanglan kini nga mano-mano nga pagpasa sa mga kantidad alang sa mga variable nga wala mabutang:
sel_account uban sa imong Selectel account number;
sel_token uban sa imong yawe alang sa Selectel API;
user_password nga adunay password alang sa OpenStack user.
Ang mga bili alang sa unang duha ka mga baryable kinahanglan nga gikuha gikan sa control panel.
Alang sa katapusan nga variable, mahimo ka makahimo og bisan unsang password.
Aron magamit ang module kinahanglan nimo nga ilisan ang mga kantidad SEL_ACCOUNT, SEL_TOKEN и USER_PASSWORD pagpadagan sa sugo:
Pagkahuman sa pagpadagan sa mando, ipakita sa Terraform kung unsang mga kapanguhaan ang gusto nga himuon ug mangayo alang sa kumpirmasyon:
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
Kung nahimo na ang proyekto, user ug papel, mahimo ka magsugod sa paghimo sa nahabilin nga mga kapanguhaan:
Sa paghimo og mga kapanguhaan, hatagi'g pagtagad ang output sa Terraform nga adunay eksternal nga IP address diin ang gibuhat nga server mahimong ma-access:
Makatrabaho ka sa gibuhat nga virtual machine pinaagi sa SSH gamit ang piho nga IP.
Pag-edit sa mga Kapanguhaan
Agi og dugang sa paghimo og mga kapanguhaan pinaagi sa Terraform, mahimo usab kini nga usbon.
Pananglitan, atong dugangan ang gidaghanon sa mga cores ug memorya alang sa atong server pinaagi sa pag-usab sa mga bili alang sa mga parameter. server_vcpus и server_ram_mb sa file examples/vpc/server_local_root_disk/main.tf:
Sa among pananglitan nga mga repositoryo Makita usab nimo ang mga manifest para sa paghimo og mga virtual machine nga adunay mga network drive.
Pananglitan sa paghimo og Kubernetes cluster
Sa dili pa kita mopadayon sa sunod nga pananglitan, atong limpyohan ang mga kapanguhaan nga atong gibuhat sa sayo pa. Sa pagbuhat niini sa gamut sa proyekto terraform-examples/examples/vpc/server_local_root_disk Atong padaganon ang sugo sa pagtangtang sa mga butang sa OpenStack:
Sa duha ka mga kaso, kinahanglan nimo nga kumpirmahon ang pagtangtang sa tanan nga mga butang:
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
Kini nga pananglitan nagmugna og proyekto, usa ka user nga adunay papel sa proyekto, ug nagpataas sa usa ka Kubernetes cluster. Sa file vars.tf makita nimo ang mga default nga kantidad, sama sa gidaghanon sa mga node, ilang mga kinaiya, bersyon sa Kubernetes, ug uban pa.
Aron makahimo og mga kapanguhaan nga susama sa unang pananglitan, una sa tanan magsugod kita sa pagsugod sa mga module ug paghimo sa mga kapanguhaan sa module project_with_userug dayon paghimo sa tanan nga uban pa:
Ibalhin namo ang paghimo ug pagdumala sa mga cluster sa Kubernetes pinaagi sa component sa OpenStack Magnum. Mahibal-an nimo ang dugang kung giunsa ang pagtrabaho sa usa ka cluster sa usa sa among miaging mga artikuloingon man base sa kahibalo.
Kung nag-andam sa cluster, ang mga disk ug mga virtual nga makina himuon ug ang tanan nga kinahanglan nga mga sangkap i-install. Ang pag-andam nagkinahanglan og mga 4 ka minuto, diin ang Terraform magpakita sa mga mensahe sama sa:
module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Still creating... (3m0s elapsed)
Kung kompleto na ang pag-install, ipakita sa Terraform nga andam na ang cluster ug ipakita ang ID niini:
Aron madumala ang gibuhat nga Kubernetes cluster pinaagi sa utility kubectl kinahanglan nimo nga makuha ang cluster access file. Aron mahimo kini, adto sa proyekto nga gihimo pinaagi sa Terraform sa lista sa mga proyekto sa imong account:
Sunod, sunda ang link sama xxxxxx.selvpc.runga makita sa ubos sa ngalan sa proyekto:
Para sa impormasyon sa pag-login, gamita ang username ug password nga imong gibuhat pinaagi sa Terraform. Kung wala ka nanglimbong vars.tf o main.tf alang sa among panig-ingnan, ang tiggamit adunay ngalan tf_user. Kinahanglan nimong gamiton ang bili sa variable isip password TF_VAR_user_password, nga gipiho sa pagsugod magamit ang terraform ganina
Sa sulod sa proyekto kinahanglan nimo nga moadto sa tab Kubernetes:
Dinhi nahimutang ang cluster nga gihimo pinaagi sa Terraform. I-download ang file para sa kubectl mahimo nimo sa tab nga "Access":
Ang mga panudlo sa pag-install nahimutang sa parehas nga tab. kubectl ug paggamit sa na-download config.yaml.
Pagkahuman sa paglansad kubectl ug pag-set sa environment variable KUBECONFIG mahimo nimong gamiton ang Kubernetes:
Kung ang gidaghanon sa mga node mausab, ang cluster magpabilin nga magamit. Human makadugang ug node pinaagi sa Terraform, mahimo nimo kining gamiton nga walay dugang nga configuration:
$ 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
konklusyon
Niini nga artikulo nahibal-an namon ang mga nag-unang paagi sa pagtrabaho "Virtual pribadong panganod" pinaagi sa Terraform. Malipay kami kung gamiton nimo ang opisyal nga provider sa Terraform nga Selectel ug maghatag feedback.
Ang bisan unsang mga bug nga makit-an sa Selectel Terraform provider mahimong i-report pinaagi sa Mga Isyu sa Github.