Imigibe yeTerraform

Imigibe yeTerraform
Makhe sigxininise imigibe embalwa, kubandakanywa naleyo inxulumene ne-loops, ukuba iinkcazo kunye nobuchule bokusasaza, kunye nemiba eqhelekileyo echaphazela iTerraform ngokubanzi:

  • ubalo kunye ne_nganye iparamitha zinemida;
  • nciphisa ixesha lokuphumla elinguziro;
  • kwanesicwangciso esilungileyo sinokusilela;
  • ukulungiswa kwakhona kunokuba nemigibe;
  • ulungelelwaniso olulityazisiweyo luyangqinelana... nolibaziseko.

Ubalo kunye neparameters nganye inemida

Imizekelo ekwesi sahluko isebenzisa kakhulu ipharamitha yokubala kunye nenkcazo_nganye kwiilophu kunye nengqiqo yoxhomekeko. Baqhuba kakuhle, kodwa banemida emibini ebalulekileyo ekufuneka uyiqaphele.

  • Bala kunye ne_nganye ayinakubhekisela kuzo naziphi na izinto eziguquguqukayo zemveliso.
  • count kunye ne_nganye ayinakusetyenziswa kuqwalaselo lwemodyuli.

ukubala kunye ne_nganye ayinakubhekisela kuzo naziphi na izinto eziguquguqukayo zemveliso

Khawufane ucinge ukuba ufuna ukusebenzisa iiseva ezininzi ze-EC2 kwaye ngesizathu esithile awufuni ukusebenzisa i-ASG. Ikhowudi yakho ingaba ngolu hlobo:

resource "aws_instance" "example_1" {
   count             = 3
   ami                = "ami-0c55b159cbfafe1f0"
   instance_type = "t2.micro"
}

Masizijonge nganye nganye.

Ekubeni i-parameter yokubala imiselwe kwixabiso le-static, le khowudi iya kusebenza ngaphandle kweengxaki: xa uqhuba umyalelo wokusebenza, uya kudala iiseva ezintathu ze-EC2. Kodwa kuthekani ukuba ufuna ukubeka iseva enye kwindawo nganye yokuFumana (AZ) ngaphakathi kwendawo yakho yangoku ye-AWS? Unokuba nekhowudi yakho ilayishe uluhlu lweendawo ukusuka kumthombo wedatha we-aws_availability_zones kwaye ujikelezise kwindawo nganye kwaye wenze iseva ye-EC2 kuyo usebenzisa iparameter yokubala kunye nofikelelo lwesalathisi soluhlu:

resource "aws_instance" "example_2" {
   count                   = length(data.aws_availability_zones.all.names)
   availability_zone   = data.aws_availability_zones.all.names[count.index]
   ami                     = "ami-0c55b159cbfafe1f0"
   instance_type       = "t2.micro"
}

data "aws_availability_zones" "all" {}

Le khowudi nayo iya kusebenza kakuhle, kuba iparamitha yokubala inokubhekisa kwimithombo yedatha ngaphandle kweengxaki. Kodwa kwenzeka ntoni ukuba inani leeseva ofuna ukulenza lixhomekeke kwisiphumo somthombo othile? Ukubonisa oku, eyona ndlela ilula kukusebenzisa i-random_integer resource, ethi, njengoko igama licebisa, ibuyisele inani elipheleleyo:

resource "random_integer" "num_instances" {
  min = 1
  max = 3
}

Le khowudi yenza inani elingenamkhethe phakathi ko-1 no-3. Makhe sibone ukuba kwenzeka ntoni xa sizama ukusebenzisa imveliso yalo vimba kwipharamitha yokubala ye-aws_instance resource:

resource "aws_instance" "example_3" {
   count             = random_integer.num_instances.result
   ami                = "ami-0c55b159cbfafe1f0"
   instance_type = "t2.micro"
}

Ukuba usebenzisa isicwangciso seterraform kule khowudi, uya kufumana le mpazamo ilandelayo:

Error: Invalid count argument

   on main.tf line 30, in resource "aws_instance" "example_3":
   30: count = random_integer.num_instances.result

The "count" value depends on resource attributes that cannot be determined until apply, so Terraform cannot predict how many instances will be created. To work around this, use the -target argument to first apply only the resources that the count depends on.

I-Terraform ifuna ukubala kwaye_nganye ibalwe ngexesha lesigaba socwangciso, phambi kokuba naziphi na izibonelelo zenziwe okanye zihlengahlengiswe. Oku kuthetha ukuba ukubala kunye ne_nganye kunokubhekisa kumagama, izinto eziguquguqukayo, imithombo yedatha, kunye noluhlu lwemithombo (ukuba ubude bazo bunokumiselwa ngexesha lokucwangcisa), kodwa hayi kwiinguqu ezibaliweyo zemveliso.

count kunye ne_nganye ayinakusetyenziswa kuqwalaselo lwemodyuli

Ngenye imini unokuhendeka ukongeza iparamitha yokubala kuqwalaselo lwemodyuli yakho:

module "count_example" {
     source = "../../../../modules/services/webserver-cluster"

     count = 3

     cluster_name = "terraform-up-and-running-example"
     server_port = 8080
     instance_type = "t2.micro"
}

Le khowudi izama ukusebenzisa ukubala ngaphakathi kwimodyuli ukwenza iikopi ezintathu zomthombo we-webserver-cluster. Okanye unokufuna ukwenza udibaniso lwemodyuli lube lukhetho olusekwe kwimeko ethile yeBoolean ngokucwangcisa ipharamitha yokubala ukuya ku-0. Oku kunokujongeka njengekhowudi enengqiqo, kodwa uzakufumana le mpazamo xa usebenzisa isicwangciso seterraform:

Error: Reserved argument name in module block

   on main.tf line 13, in module "count_example":
   13: count = 3

The name "count" is reserved for use in a future version of Terraform.

Ngelishwa, ukusuka kwi-Terraform 0.12.6, ukusebenzisa i-count okanye ye_nganye kwisixhobo semodyuli ayixhaswanga. Ngokutsho kweTerraform 0.12 amanqaku okukhululwa (http://bit.ly/3257bv4), i-HashiCorp iceba ukongeza obu buchule kwixesha elizayo, ngoko kuxhomekeke xa ufunda le ncwadi, ingaba sele ikhona. Ukufumana ngokuqinisekileyo, funda iTerraform changelog apha.

Unyino lweZero yokuSebenziswa kwexesha lokuphumla

Ukusebenzisa i-block_before_destroy block ngokudibanisa ne-ASG sisisombululo esihle kakhulu sokwenza i-zero-downtime deployments, ngaphandle kwe-caveat enye: imithetho ye-autoscaling ayixhaswanga. Okanye ukuchaneka ngakumbi, oku kusetha kwakhona ubungakanani be-ASG ukubuyisela kwi-min_size kwi-deployment yonke, enokuba yingxaki ukuba usebenzisa imithetho ye-autoscaling ukwandisa inani leeseva ezisebenzayo.

Ngokomzekelo, imodyuli ye-webserver-cluster iqulethe i-aws_autoscaling_schedule resources, ethi ngo-9 am inyuse inani labancedisi kwiqela ukusuka kwisibini ukuya kwishumi. Ukuba uthumela ngo-11 kusasa, i-ASG entsha iya kuqalisa ngeeseva nje ezimbini kuneshumi kwaye ihlale ilolo hlobo kude kube yintsimbi yesi-9 kusuku olulandelayo.

Lo mda unokujikwa ngeendlela ezininzi.

  • Guqula iparamitha yokuphindaphinda kwi-aws_autoscaling_schedule ukusuka ku-0 9 * * * (β€œqhuba ngo-9 am”) ukuya kwinto efana no-0-59 9-17 * * * (β€œbaleka yonke iminithi ukusuka kwi-9 ukuya ku-5 pm”). Ukuba i-ASG sele inamaseva alishumi, ukusebenzisa lo mgaqo we-autoscaling kwakhona akuyi kutshintsha nantoni na, yinto esiyifunayo. Kodwa ukuba i-ASG isanda kusetyenziswa, lo mgaqo uya kuqinisekisa ukuba ngomzuzu ophezulu inani labancedisi bayo liya kufikelela kwishumi. Le ayisiyondlela entle ngokupheleleyo, kwaye ukutsiba okukhulu ukusuka kwishumi ukuya kwiiseva ezimbini kunye nomva kunokubangela iingxaki kubasebenzisi.
  • Yenza ushicilelo lwesiko olusebenzisa i-AWS API ukumisela inani labancedisi abasebenzayo kwi-ASG, yibize usebenzisa umthombo wedatha wangaphandle (jonga "uMthombo weDatha waNgaphandle" kwiphepha 249), kwaye usete iparamitha ye-ASG's oyifunayo kwixabiso elibuyiswe iskripthi. Ngale ndlela, umzekelo omtsha we-ASG uya kuhlala uqhuba kwisikhundla esifanayo nekhowudi ekhoyo yeTerraform kwaye yenza kube nzima ukuyigcina.

Ewe kunjalo, iTerraform yayiza kuba nenkxaso eyakhelwe-ngaphakathi kwi-zero-downtime deployments, kodwa ukususela ngoMeyi ka-2019, iqela le-HashiCorp lalingenazo izicwangciso zokongeza lo msebenzi (iinkcukacha - apha).

Isicwangciso esichanekileyo sinokungaphunyezwa ngempumelelo

Ngamanye amaxesha umyalelo wesicwangciso uvelisa isicwangciso esichanekileyo esichanekileyo, kodwa umyalelo wesicelo ubuyisela impazamo. Zama, umzekelo, ukongeza i-aws_iam_resource yomsebenzisi enegama elifanayo olisebenzisileyo kumsebenzisi we-IAM owakhe ngaphambili kwiSahluko sesi-2:

resource "aws_iam_user" "existing_user" {
   # ΠŸΠΎΠ΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сюда имя ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ IAM,
   # Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² использовании ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ terraform import
   name = "yevgeniy.brikman"
}

Ngoku, ukuba uqhuba isicwangciso somyalelo, iTerraform iya kukhupha isicwangciso esibonakala sifanelekile:

Terraform will perform the following actions:

   # aws_iam_user.existing_user will be created
   + resource "aws_iam_user" "existing_user" {
         + arn                  = (known after apply)
         + force_destroy   = false
         + id                    = (known after apply)
         + name               = "yevgeniy.brikman"
         + path                 = "/"
         + unique_id         = (known after apply)
      }

Plan: 1 to add, 0 to change, 0 to destroy.

Ukuba usebenzisa isicelo somyalelo uya kufumana le mpazamo ilandelayo:

Error: Error creating IAM User yevgeniy.brikman: EntityAlreadyExists:
User with name yevgeniy.brikman already exists.

   on main.tf line 10, in resource "aws_iam_user" "existing_user":
   10: resource "aws_iam_user" "existing_user" {

Ingxaki, kunjalo, kukuba umsebenzisi we-IAM onelo gama sele ekhona. Kwaye oku akunakwenzeka kuphela kubasebenzisi be-IAM, kodwa phantse kuwo nawuphi na uvimba. Kungenzeka ukuba umntu wenze esi sixhobo ngesandla okanye usebenzisa umgca womyalelo, kodwa nokuba yeyiphi na indlela, ukuthelekisa ii-ID kukhokelela kwiingxabano. Kukho iinguqulelo ezininzi zale mpazamo ehlala ibamba abantu abatsha eTerraform ngokumangala.

Inqaku eliphambili kukuba umyalelo wesicwangciso seterraform uthatha ingqalelo kuphela ezo zixhobo ezichazwe kwifayile yesimo seTerraform. Ukuba izixhobo zenziwa ngenye indlela (umzekelo, ngesandla ngokunqakraza kwi-console ye-AWS), aziyi kuphelela kwifayile yelizwe kwaye ngoko iTerraform ayiyi kuyithatha ingqalelo xa isenza umyalelo wesicwangciso. Ngenxa yoko, isicwangciso esibonakala sichanekile ekuqaleni siya kuba singaphumeleli.

Zimbini izifundo ezinokufundwa kule nto.

  • Ukuba sele uqalile ukusebenza ngeTerraform, musa ukusebenzisa enye into. Ukuba inxalenye yeziseko zakho zilawulwa kusetyenziswa iTerraform, awusakwazi ukuyiguqula ngesandla. Ngaphandle koko, awubekanga engozini kuphela iimpazamo ezingaqhelekanga ze-Terraform, kodwa uphinda ulahle uninzi lweenzuzo ze-IaC ekubeni ikhowudi ayisayi kuba lumelo oluchanekileyo lweziseko zakho.
  • Ukuba sele unazo iziseko zophuhliso, sebenzisa umyalelo wokungenisa elizweni. Ukuba uqala ukusebenzisa iTerraform eneziseko ezingundoqo ezikhoyo, ungayongeza kwifayile yelizwe usebenzisa umyalelo wokungenisa weterraform. Ngale ndlela iTerraform iya kwazi ukuba yeyiphi iziseko ezingundoqo ekufuneka ilawulwe. Umyalelo wokungenisa uthatha iingxoxo ezimbini. Eyokuqala yidilesi yesixhobo kwiifayile zakho zoqwalaselo. Isivakalisi esilapha siyafana nesamalinki ovimba: _. (njenge aws_iam_user.exist_user). Ingxoxo yesibini yi-ID yesixhobo esiza kuthathwa ngaphandle. Masithi i-ID yesixhobo aws_iam_user ligama lomsebenzisi (umzekelo, yevgeniy.brikman), kunye ne-ID yesixhobo aws_instance yi-ID yomncedisi we-EC2 (njenge-i-190e22e5). Indlela yokurhweba ngaphandle kwesibonelelo idla ngokuboniswa kumaxwebhu asezantsi kwiphepha lawo.

    Apha ngezantsi ngumyalelo worhweba ngaphandle ongqamanisa i-aws_iam_yesixhobo somsebenzisi owongeze kuqwalaselo lwakho lweTerraform kunye nomsebenzisi we-IAM kwiSahluko sesi-2 (ubeka endaweni yegama lakho yevgeniy.brikman, kunjalo):

    $ terraform import aws_iam_user.existing_user yevgeniy.brikman

    I-Terraform iyakubiza i-AWS API ukufumana umsebenzisi wakho we-IAM kwaye wenze unxulumano lwefayile yelizwe phakathi kwayo kunye ne-aws_iam_user.existing_umsebenzisi kuqwalaselo lwakho lweTerraform. Ukususela ngoku, xa uqhuba umyalelo wesicwangciso, iTerraform iya kwazi ukuba umsebenzisi we-IAM sele ekhona kwaye akayi kuzama ukuyidala kwakhona.

    Kuyafaneleka ukuba uqaphele ukuba ukuba sele unemithombo eninzi ofuna ukuyingenisa kwiTerraform, ukubhala ngesandla ikhowudi kunye nokungenisa nganye nganye ngexesha kunokuba yingxaki. Ngoko ke kufanelekile ukujonga isixhobo esinje ngeTerraforming (http://terraforming.dtan4.net/), esinokungenisa ngokuzenzekelayo ikhowudi kwaye sichaze kwiakhawunti yakho ye-AWS.

    Ukuhlaziya izinto kunokuba nemigibe yakho

    Refactoring yinto eqhelekileyo kudweliso lwenkqubo apho utshintsha ubume bangaphakathi bekhowudi ngelixa ushiya ukuziphatha kwangaphandle kungatshintshanga. Oku kukwenza ikhowudi icace ngakumbi, icoceke, kwaye kube lula ukuyigcina. I-refactoring bubuchule obuyimfuneko ekufuneka busetyenziswe rhoqo. Kodwa xa kufikwa kwiTerraform okanye nasiphi na esinye isixhobo se-IaC, kufuneka ulumke kakhulu malunga nokuba uthetha ukuthini "ngokuziphatha kwangaphandle" kweqhekeza lekhowudi, kungenjalo kuya kuvela iingxaki ezingalindelekanga.

    Umzekelo, uhlobo oluqhelekileyo lokuhlengahlengisa kukutshintsha amagama ezinto eziguquguqukayo okanye imisebenzi eqondakalayo ngakumbi. Ii-IDE ezininzi zinenkxaso eyakhelwe-ngaphakathi yokuphinda iphinde iphinde iphinde iphinde ithiye ngokuzenzekela izinto eziguquguqukayo kunye nemisebenzi kuyo yonke iprojekthi. Kwiilwimi ezicwangcisiweyo zenjongo ngokubanzi, le yinkqubo encinci onokuthi ungacingi ngayo, kodwa kwiTerraform kufuneka ulumke kakhulu ngale nto, kungenjalo unokufumana ukungabikho.

    Umzekelo, imodyuli yeqela le-webserver ine-input variable cluster_name:

    variable "cluster_name" {
       description = "The name to use for all the cluster resources"
       type          = string
    }

    Khawufane ucinge ukuba uqale ukusebenzisa le modyuli ukusasaza i-microservice ebizwa ngokuba yi-foo. Kamva, ufuna ukuthiya ngokutsha inkonzo yakho kwibar. Olu tshintsho lusenokubonakala lungabalulekanga, kodwa enyanisweni lunokubangela ukuphazamiseka kwenkonzo.

    Inyani yeyokuba imodyuli yeqela le-webserver isebenzisa i-cluster_name variable kwinani lezixhobo, kubandakanya igama leparameter yamaqela amabini okhuseleko kunye ne-ALB:

    resource "aws_lb" "example" {
       name                    = var.cluster_name
       load_balancer_type = "application"
       subnets = data.aws_subnet_ids.default.ids
       security_groups      = [aws_security_group.alb.id]
    }

    Ukuba utshintsha iparameter yegama kwisixhobo, iTerraform iyakucima uguqulelo oludala lweso sixhobo kwaye yenze entsha endaweni yayo. Kodwa ukuba eso sixhobo yi-ALB, phakathi kokucinywa nokukhuphela inguqulelo entsha, awuyi kuba nesixhobo sokuthumela i-traffic kwiseva yakho yewebhu. Ngokunjalo, ukuba iqela lokhuseleko licinyiwe, iiseva zakho ziya kuqala ukwala nayiphi na itrafikhi yenethiwekhi kude kube liqela elitsha lenziwe.

    Olunye uhlobo lokuhlaziya onokuthi ube nomdla kulo kukutshintsha i-ID yeTerraform. Masithathe i-aws_security_group resource kwimodyuli yeqela lewebhu njengomzekelo:

    resource "aws_security_group" "instance" {
      # (...)
    }

    Isichongi sesi sixhobo sibizwa ngokuba ngumzekelo. Khawufane ucinge ukuba ngexesha lokuphinda wenze isigqibo sokuyitshintshela kwinto eqondakalayo (ngokoluvo lwakho) igama cluster_instance:

    resource "aws_security_group" "cluster_instance" {
       # (...)
    }

    Kuya kwenzeka ntoni ekugqibeleni? Kunjalo: ukuphazamiseka.

    I-Terraform inxulumanisa i-ID yesixhobo ngasinye kunye ne-ID yomboneleli welifu. Umzekelo, i-iam_user inxulunyaniswe ne-ID yomsebenzisi ye-AWS IAM, kwaye i-aws_instance inxulunyaniswa ne-ID yeseva ye-AWS EC2. Ukuba utshintsha i-ID yesixhobo (yithi ukusuka kumzekelo ukuya kwi-cluster_instance, njengoko kunjalo nge-aws_security_group), ukuya kwi-Terraform iya kubonakala ngathi ucime uvimba omdala kwaye wongeze entsha. Ukuba usebenzisa olu tshintsho, iTerraform iyakucima iqela elidala lokhuseleko kwaye yenze entsha, ngelixa iiseva zakho ziqala ukwala nayiphi na itrafikhi yenethiwekhi.

    Nazi izifundo ezine eziphambili onokuthi uzithathe kule ngxoxo.

    • Soloko usebenzisa umyalelo wesicwangciso. Iyakwazi ukuveza zonke ezi zifo. Hlaziya isiphumo sayo ngononophelo kwaye unike ingqalelo kwiimeko apho iTerraform iceba ukucima izixhobo ezinokuthi zingacinywa.
    • Yenza phambi kokuba ucime. Ukuba ufuna ukutshintsha uvimba, cinga ngononophelo malunga nokuba ufuna ukwenza enye indawo phambi kokuba ucime imvelaphi. Ukuba impendulo nguewe, ukudala_ngaphambi_konakalise kunokunceda. Isiphumo esifanayo sinokufezekiswa ngesandla ngokwenza amanyathelo amabini: okokuqala yongeza isibonelelo esitsha kuqwalaselo kwaye usebenzise umyalelo wokufaka isicelo, kwaye emva koko ususe isibonelelo esidala kwi-configuration kwaye usebenzise umyalelo wokufaka isicelo kwakhona.
    • Ukutshintsha izichongi kufuna ukutshintsha imeko. Ukuba ufuna ukutshintsha isazisi esinxulunyaniswa nesixhobo (umzekelo, yithiya ngokutsha i-aws_security_group ukusuka kumzekelo ukuya kwi-cluster_instance) ngaphandle kokucima uvimba kunye nokudala uguqulelo olutsha lwayo, kufuneka uhlaziye ifayile yemeko yeTerraform ngokufanelekileyo. Ungaze wenze oku ngesandla-sebenzisa i-terraform state command endaweni yoko. Xa uthiya ngokutsha izichazi, kufuneka usebenzise umyalelo we-terraform state mv, onale syntax ilandelayo:
      terraform state mv <ORIGINAL_REFERENCE> <NEW_REFERENCE>

      ORIGINAL_REFERENCE libinzana elibhekisa kumthombo ngendlela ekuyo yangoku, kwaye NEW_REFERENCE kulapho ufuna ukuyisusa khona. Umzekelo, xa unika elinye iqela le-aws_security_group ukusuka kumzekelo ukuya kwi-cluster_instance, kufuneka usebenzise lo myalelo ulandelayo:

      $ terraform state mv 
         aws_security_group.instance 
         aws_security_group.cluster_instance

      Oku kuxelela iTerraform ukuba imeko ebifudula inxulunyaniswa ne aws_security_group.instance ngoku kufuneka inxulunyaniswe ne aws_security_group.cluster_instance. Ukuba emva kokuthiya ngokutsha kunye nokusebenzisa lo myalelo isicwangciso seterraform asibonisi naluphi na utshintsho, ngoko wenze yonke into ngokuchanekileyo.

    • Ezinye iisetingi azinakutshintshwa. Iiparamitha zezibonelelo ezininzi azitshintshi. Ukuba uzama ukuzitshintsha, iTerraform iya kucima isibonelelo esidala kwaye yenze entsha endaweni yayo. Iphepha ngalinye lesixhobo liya kubonisa ukuba kwenzekani xa utshintsha isicwangciso esithile, ke qiniseka ukuba ujonga amaxwebhu. Soloko usebenzisa umyalelo wesicwangciso kwaye ucinge ngokusebenzisa i-creative_before_destroy isicwangciso.

    Ukungaguquguquki okumisiweyo kuyahambelana... kunye nokurhoxiswa

    Ezinye ii-APIs zababoneleli belifu, ezifana ne-AWS, zi-asynchronous kwaye zilibazise ukuhambelana. I-Asynchrony ithetha ukuba i-interface inokubuyisela ngokukhawuleza impendulo ngaphandle kokulinda isenzo esiceliwe ukuba sigqitywe. Ukungaguquguquki okulibazisekileyo kuthetha ukuba utshintsho lunokuthatha ixesha ukuba lusasazeke kwinkqubo yonke; ngelixa oku kusenzeka, iimpendulo zakho zinokungahambelani kwaye zixhomekeke ekubeni yeyiphi ireplica yomthombo wedatha ephendula kwiifowuni zakho ze-API.

    Khawufane ucinge, umzekelo, ukuba wenze umnxeba we-API kwi-AWS uyicela ukuba yenze iseva ye-EC2. I-API iya kubuyisela impendulo "eyimpumelelo" (201 Idalwe) phantse ngokukhawuleza, ngaphandle kokulinda ukuba iseva ngokwayo yenziwe. Ukuba uzama ukudibanisa kuyo ngoko nangoko, ngokuqinisekileyo iya kusilela kuba ngelo xesha i-AWS isaqalisa izixhobo okanye, ngenye indlela, umncedisi akakaqalisi. Ngaphezu koko, ukuba wenza enye ifowuni ukufumana ulwazi malunga nalo mncedisi, ungafumana impazamo (i-404 ayifunyenwanga). Into kukuba ulwazi malunga nale seva ye-EC2 isenokusasazwa kuyo yonke i-AWS ngaphambi kokuba ifumaneke kuyo yonke indawo, kuya kufuneka ulinde imizuzwana embalwa.

    Nanini na xa usebenzisa i-asynchronous API kunye nokungaguquguquki ukonqena, kufuneka uzame kwakhona isicelo sakho de isenzo sigqibe kwaye sisasazeke ngesixokelelwano. Ngelishwa, i-AWS SDK ayiboneleli naziphi na izixhobo ezilungileyo kule nto, kunye neprojekthi ye-Terraform esetyenziselwa ukuhlupheka kwiibhugi ezininzi ezifana ne-6813 (https://github.com/hashicorp/terraform/issues/6813):

    $ terraform apply
    aws_subnet.private-persistence.2: InvalidSubnetID.NotFound:
    The subnet ID 'subnet-xxxxxxx' does not exist

    Ngamanye amazwi, udala isibonelelo (njenge-subnet) kwaye uzame ukufumana ulwazi malunga nayo (njenge-ID ye-subnet esanda kwenziwa), kwaye iTerraform ayikwazi ukuyifumana. Uninzi lwezi bugs (kuquka i-6813) zilungisiwe, kodwa zisakhula amaxesha ngamaxesha, ngakumbi xa iTerraform isongeza inkxaso yohlobo olutsha lomthombo. Oku kuyacaphukisa, kodwa kwiimeko ezininzi akubangeli nayiphi na ingozi. Xa uqhuba i-terraform isicelo kwakhona, yonke into kufuneka isebenze, kuba ngeli xesha ulwazi luya kuba sele lusasazeke kuyo yonke inkqubo.

    Esi sicatshulwa sithathwe kwincwadi ka-Evgeniy Brikman "I-Terraform: iziseko zophuhliso kwinqanaba lekhowudi".

umthombo: www.habr.com

Yongeza izimvo