Dabinnada Terraform

Dabinnada Terraform
Aan muujino dhowr godad, oo ay ku jiraan kuwa la xiriira wareegyada, haddii bayaannada iyo farsamooyinka geynta, iyo sidoo kale arrimo badan oo guud oo saameeya Terraform guud ahaan:

  • tirinta iyo_beeg kasta ayaa leh xaddid;
  • xaddid meel-dhigista wakhtiga dhimista;
  • xitaa qorshe wanaagsan ayaa dhici kara;
  • dib-u-soo-celinta waxay yeelan kartaa godadkeeda;
  • wada shaqaynta dib loo dhigay waa mid joogto ah... oo leh dib udhigid.

Tirinta iyo_beeg kasta ayaa leh xaddid

Tusaalooyinka cutubkan ayaa si weyn u isticmaala cabbirka tirinta iyo tibaax kasta oo siddooyin iyo macquul ah oo shuruud ah. Waxay si fiican u shaqeeyaan, laakiin waxay leeyihiin laba xaddidaad oo muhiim ah oo aad u baahan tahay inaad ka warqabto.

  • Tirinta iyo_midkasta ma tixraaci karo doorsoomayaal wax soo saar kheyraad ah.
  • tirinta iyo for_kasta looma isticmaali karo qaabeynta moduleka.

tirinta iyo_midkasta ma tixraaci karo doorsoomayaal wax soo saar kheyraad ah

Bal qiyaas inaad u baahan tahay inaad geyso dhowr server EC2 iyo sabab qaar ka mid ah ma rabto inaad isticmaasho ASG. Koodhkaagu wuxuu noqon karaa sidan:

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

Bal aan mid mid u eegno.

Maadaama cabbirka tirinta loo dejiyay qiime taagan, koodhkani wuxuu ku shaqayn doonaa dhibaato la'aan: marka aad socodsiiso amarka codso, wuxuu abuuri doonaa saddex adeegayaal EC2. Laakiin ka waran haddii aad rabto in aad geyso hal server aag kasta oo la heli karo (AZ) gudaha gobolkaaga AWS ee hadda? Waxaad ka heli kartaa koodhkaaga liiska aagagga aws_availability_zones isha xogta ka dibna u gudub mid kasta oo ka dhex abuur server EC2 adiga oo isticmaalaya cabbirka tirinta iyo gelitaanka tusmada:

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

Koodhkani waxa kale oo uu si fiican u shaqayn doonaa, maadaama cabbirka tirinta uu tixraaci karo ilaha xogta dhib la'aan. Laakiin maxaa dhacaya haddii tirada server-yada aad u baahan tahay inaad abuurto ay ku xiran tahay wax soo saarka kheyraadka qaarkood? Si tan loo muujiyo, habka ugu fudud waa in la isticmaalo kheyraadka random_integer, kaas oo, sida magacu tilmaamayo, soo celiya tiro random ah:

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

Koodhkani waxa uu abuuraa tiro random ah oo u dhexeeya 1 iyo 3. Aynu aragno waxa dhacaya haddii aan isku dayno in aan u isticmaalno soosaarka kheyraadkan ee tirinta ilaha aws_instance:

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

Haddii aad ku socodsiiso qorshaha terraform code-kan, waxaad heli doontaa khaladka soo socda:

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.

Terraform waxay u baahan tahay in la tiriyo oo mid walba la xisaabiyo inta lagu jiro marxaladda qorshaynta, ka hor inta aan wax agab ah la abuurin ama wax laga beddelin. Tani waxay ka dhigan tahay in tirinta iyo for_kasta ay tixraaci karaan suugaanta, doorsoomayaasha, ilaha xogta, iyo xitaa liisaska kheyraadka (ilaa inta dhererkooda lagu go'aamin karo waqtiga jadwalka), laakiin maaha in la xisaabiyo doorsoomayaasha soosaarka kheyraadka.

tirinta iyo for_kasta looma isticmaali karo qaabeynta moduleka

Maalin maalmaha ka mid ah waxaa laga yaabaa inaad isku daydo inaad ku darto cabbirka tirinta qaabaynta cutubkaaga:

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

     count = 3

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

Koodhkani waxa uu isku dayaa in uu isticmaalo tirinta moduleka si uu u sameeyo saddex koobi oo ah ilaha webserver-cluster. Ama waxaa laga yaabaa inaad rabto inaad xidhidhiyaha moduleka ka dhigto mid ikhtiyaari ah oo ku salaysan qaar ka mid ah xaaladaha Boolean adoo dejinaya cabbirkiisa 0. Tani waxay u ekaan kartaa kood macquul ah, laakiin waxaad heli doontaa qaladkan markaad wado qorshaha terraform:

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.

Nasiib darro, marka la eego Terraform 0.12.6, isticmaalka tirinta ama_mid kasta ee agabka moduleka lama taageero. Marka loo eego qoraallada sii deynta Terraform 0.12 (http://bit.ly/3257bv4), HashiCorp waxay qorsheyneysaa inay ku darto awooddan mustaqbalka, marka iyadoo ku xiran marka aad akhrido buuggan, waxaa laga yaabaa in mar hore la heli karo. Si aad u hubiso, halkan ka akhri Terraform changelog.

Xaddidaadda Gelida Wakhtiga Dhimista Eber

Isticmaalka block_before_destroy oo ay weheliso ASG waa xal aad u wanaagsan abuurista waqti-dhimis eber ah, marka laga reebo hal digniin: xeerarka isugaynta lama taageero. Ama si aad u noqoto mid sax ah, tani waxay dib u dejinaysaa cabbirka ASG ilaa min_size ee hawlgal kasta, taas oo noqon karta dhibaato haddii aad isticmaalayso sharciyada autoscaling si aad u kordhiso tirada server-yada socda.

Tusaale ahaan, moduleka webserver-cluster wuxuu ka kooban yahay labo ka mid ah aws_autoscaling_schedule kheyraadka, kaas oo 9 subaxnimo kordhiya tirada server-yada kutlada min laba ilaa toban. Haddii aad geyso, dheh, 11:9 subaxnimo, ASG-ga cusub wuxuu ku kici doonaa laba adeegayaal oo kaliya halkii uu ka ahaan lahaa toban wuxuuna ku sii jirayaa ilaa XNUMX subaxnimo maalinta xigta.

Xaddidaaddan waxaa looga gudbi karaa siyaabo dhowr ah.

  • U beddel cabbirka soo noqnoqda ee aws_autoscaling_schedule laga bilaabo 0 9 * * * ("ku orda 9 subaxnimo") oo u beddel wax u eg 0-59 9-17 * * * ("ka orod daqiiqad kasta laga bilaabo 9 subaxnimo ilaa 5 galabnimo"). Haddii ASG ay hore u leedahay toban server, socodsiinta qaanuunka autoscaling mar kale waxba ma beddeli doono, taas oo ah waxa aan rabno. Laakin haddii ASG dhawaan la geeyey, sharcigani waxa uu hubin doonaa in ugu badnaan hal daqiiqo ay tirada adeegayaashu ay gaari doonaan toban. Tani ma aha hab gebi ahaanba xarrago leh, iyo boodada waaweyn ee toban ilaa laba server iyo dhabarka ayaa sidoo kale dhibaato u keeni kara isticmaalayaasha.
  • Samee qoraal gaar ah oo isticmaala AWS API si loo go'aamiyo tirada adeegayaasha firfircoon ee ASG, wac adiga oo isticmaalaya isha xogta dibadda ah (eeg "Isha Xogta Dibadda" ee bogga 249), oo deji jaangooyooyinka awoodda_capacity ee ASG ee qiimaha uu soo celiyay qoraalka. Sidan, tusaale kasta oo ASG ah oo cusub wuxuu had iyo jeer ku socon doonaa awood la mid ah koodhka Terraform-ka ee jira oo ka dhigaya mid aad u adag in la sii wado.

Dabcan, Terraform waxay si fiican u lahaan lahayd taageero dhismeed oo eber ah oo la diri karo, laakiin laga bilaabo Maajo 2019, kooxda HashiCorp ma lahayn wax qorshayaal ah oo ay ku daraan shaqadan (faahfaahinta - halkan).

Qorshaha saxda ah waxaa laga yaabaa in si guul leh loo fuliyo

Mararka qaarkood amarka qorshuhu wuxuu soo saaraa qorshe meel dhigis sax ah, laakiin amarka codsanaya wuxuu soo celiyaa qalad. Isku day, tusaale ahaan, ku darida agabka aws_iam_user oo wata isla magaca aad isticmaashay IAM ee aad hore ugu abuurtay cutubka 2:

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

Hadda, haddii aad maamusho amarka qorshaha, Terraform wuxuu soo saari doonaa qorshe u muuqda oo macquul ah:

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.

Haddii aad socodsiiso amarka codsiga waxaad heli doontaa cilada soo socota:

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

Dhibaatadu, dabcan, waa in isticmaale IAM ee magacaas wata uu hore u jiray. Tanina kuma dhici karto kaliya isticmaalayaasha IAM, laakiin ku dhawaad ​​kheyraad kasta. Waxaa suurtogal ah in qof uu u abuuray kheyraadkan gacantiisa ama uu isticmaalo khadka taliska, laakiin si kastaba ha noqotee, aqoonsiga iswaafajinta waxay horseedaa isku dhacyo. Waxaa jira kala duwanaansho badan oo khaladkan ah oo inta badan ku qaba dadka cusub ee Terraform la yaab leh.

Qodobka ugu muhiimsan ayaa ah in amarka qorshaha terraform-ku uu xisaabta ku darsado kaliya ilaha lagu qeexay faylka gobolka Terraform. Haddii kheyraadka loo abuuro si kale (tusaale ahaan, gacanta adigoo gujinaya AWS console), kuma dhammaan doonaan faylka gobolka sidaas darteed Terraform ma tixgelin doono iyaga marka la fulinayo amarka qorshaha. Natiijo ahaan, qorshe u muuqda mid sax ah jaleecada hore wuxuu noqonayaa mid aan guulaysan.

Laba cashar ayaa laga baran karaa.

  • Haddii aad mar hore bilowday la shaqaynta Terraform, ha isticmaalin wax kale. Haddii qayb ka mid ah kaabayaashaaga lagu maareeyo Terraform, ma beddeli kartid gacanta. Haddii kale, kaliya maahan inaad halis u tahay khaladaadka Terraform-ka la yaabka leh, laakiin sidoo kale waxaad diidday qaar badan oo ka mid ah faa'iidooyinka IaC maaddaama koodka uusan mar dambe noqon doonin matalaad sax ah ee kaabayaashaaga.
  • Haddii aad hore u leedahay kaabayaasha qaar, isticmaal amarka soo dejinta. Haddii aad bilaabayso inaad isticmaasho Terraform oo leh kaabayaasha jira, waxaad ku dari kartaa faylka gobolka adoo isticmaalaya amarka soo dejinta terraform. Sidan Terraform waxay ogaan doontaa kaabayaasha loo baahan yahay in la maareeyo. Amarka soo dejinta wuxuu qaataa laba doodood. Midka koowaad waa ciwaanka kheyraadka ee ku jira galka qaabeynta. Ereyga halkan waxa uu la mid yahay isku xirka ilaha: _. (sida aws_iam_user.existing_user). Doodda labaad waa aqoonsiga kheyraadka la soo dejinayo. Aynu nidhaahno aqoonsiga kheyraadka aws_iam_user waa magaca isticmaalaha (tusaale, yevgeniy.brikman), iyo aws_instance ID-ga kheyraadku waa aqoonsiga server-ka EC2 (sida i-190e22e5). Sida loo soo dejiyo kheyraadka waxaa badanaa lagu muujiyaa dukumeentiga ku yaal bogga hoose ee boggiisa.

    Hoos waxaa ku yaal amarka soo dejinta kaas oo isku dhejinaya aws_iam_user kheyraadka aad ku dartay qaabeynta Terraform-kaaga oo ay la socoto adeegsadaha IAM cutubka 2 (oo magacaaga u beddelaya yevgeniy.brikman, dabcan):

    $ terraform import aws_iam_user.existing_user yevgeniy.brikman

    Terraform waxa uu wici doona AWS API si uu u helo isticmaalaha IAM oo uu u sameeyo xidhiidh faylal dawladeed oo u dhexeeya isaga iyo aws_iam_user.existing_user ilahaaga qaabaynta Terraform. Hadda laga bilaabo, markaad socodsiiso amarka qorshaha, Terraform waxay ogaan doontaa in isticmaale IAM uu hore u jiray oo aanu isku dayi doonin inuu mar kale sameeyo.

    Waxaa xusid mudan in haddii aad hore u haysatid agab badan oo aad doonayso inaad ku soo dejiso Terraform-ka, in aad gacanta ku qorto koodka iyo soo dejinta mid kasta marba waxay noqon kartaa dhib. Markaa waxaa habboon in la eego aaladda sida Terraforming (http://terraforming.dtan4.net/), kaas oo si toos ah uga soo dejin kara koodka oo ka sheegi kara akoonkaaga AWS.

    Dib-u-soo-celinta waxay yeelan kartaa godadkeeda

    Dib u soo celinta waa caado caadi ah oo ku saabsan barnaamijka halkaas oo aad bedesho qaabka gudaha ee code-ka adigoo ka tagaya dabeecadda dibadda oo aan isbeddelin. Tani waa in koodka laga dhigo mid cad, nadiif ah, oo sahlan in la ilaaliyo. Dib u habeyntu waa farsamo aan laga maarmi karin oo ay tahay in si joogto ah loo isticmaalo. Laakin marka ay timaado Terraform ama qalab kale oo IaC ah, waa inaad aad uga taxadirtaa waxa aad ula jeedo "dhaqanka dibadda" ee gabal kood ah, haddii kale dhibaatooyin lama filaan ah ayaa soo bixi doona.

    Tusaale ahaan, nooc ka mid ah dib-u-soo-celinta caadiga ah waa beddelka magacyada doorsoomayaasha ama shaqooyinka kuwo la fahmi karo. Qaar badan oo IDE-yo ah ayaa leh taageero ku dhisan dib-u-soo-noolayn waxayna si toos ah u magacaabi karaan doorsoomayaasha iyo shaqooyinka inta uu socdo mashruuca. Luuqadaha barnaamijyada ujeedo-guud ah, tani waa habraac yar oo laga yaabo inaadan ka fikirin, laakiin Terraform-ka waa inaad aad uga taxadirtaa tan, haddii kale waxaad la kulmi kartaa maqnaansho.

    Tusaale ahaan, moduleka-clusterka webserver-ku wuxuu leeyahay cluster_name doorsoome:

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

    Ka soo qaad inaad bilawday adeegsiga cutubkan si aad u gayso adeeg-yar oo loo yaqaan foo. Ka dib, waxaad rabtaa inaad magacaaga u magacowdo bar. Isbeddelkani waxa uu u ekaan karaa mid aan waxtar lahayn, laakiin dhab ahaantii waxa uu sababi karaa khalkhal adeega.

    Xaqiiqdu waxay tahay in moduleka-cluster-ka websaydka uu isticmaalo doorsoomiyaha cluster_name ee tiro agab ah, oo ay ku jiraan cabbirka magaca laba kooxood oo ammaan ah iyo 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]
    }

    Haddii aad beddesho halbeegga magaca kheyraadka, Terraform wuxuu tirtiri doonaa noocii hore ee kheyraadkaas oo mid cusub ayuu ku abuuri doonaa booskiisa. Laakin haddii kheyraadkaasi yahay ALB, inta u dhaxaysa tirtiridda iyo soo dejinta nooc cusub, ma heli doontid hab aad ugu jiheyso taraafikada server-kaaga shabakadda. Sidoo kale, haddii kooxda amniga la tirtiro, server-yadaadu waxay bilaabi doonaan inay diidaan taraafikada shabakad kasta ilaa koox cusub laga abuuro.

    Nooc kale oo dib-u-habeyn ah oo laga yaabo inaad xiisaynayso ayaa ah beddelka aqoonsiga Terraform. Aynu soo qaadanno ilaha aws_security_group ee ku jira moduleka-kultarka webka tusaale ahaan:

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

    Aqoonsiga kheyraadkan waxaa loo yaqaan tusaale. Bal qiyaas in inta lagu guda jiro dib-u-habaynta aad go'aansatey inaad u beddesho mid la fahmi karo (aragtidaada) magaca cluster_intance:

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

    Maxaa dhici doona dhamaadka? Taasi waa sax: carqalad.

    Terraform waxay ku xidhaa aqoonsiga kheyraad kasta aqoonsiga bixiyaha daruuraha. Tusaale ahaan, iam_user waxa uu la xidhiidha aqoonsiga isticmaalaha AWS IAM, iyo aws_intance waxa uu la xidhiidhaa aqoonsiga serfarka AWS EC2. Haddii aad beddesho aqoonsiga kheyraadka (tusaale ka dheh cluster_intance, sida xaaladdu tahay aws_security_group), Terraform waxay u muuqan doontaa sidii aad tirtirtay kheyraadkii hore oo aad ku dartay mid cusub. Haddii aad isticmaasho isbeddeladan, Terraform wuxuu tirtiri doonaa kooxdii hore ee amniga oo abuuri doonta mid cusub, halka server-yadaadu ay bilaabaan inay diidaan taraafikada shabakad kasta.

    Halkan waxaa ah afar cashar oo muhiim ah oo ay tahay inaad ka qaadato doodan.

    • Had iyo jeer isticmaal amarka qorshaha. Waxay daaha ka qaadi kartaa dhammaan jahawareerkan. Si taxadar leh u eeg wax soo saarkeeda oo u fiirso xaaladaha ay Terraform qorsheynayso inay tirtirto agabka ay u badan tahay inaan la tirtirin.
    • Samee intaadan tirtirin. Haddii aad rabto inaad bedesho kheyraad, si taxadar leh uga fikir inaad u baahan tahay inaad abuurto beddelaad ka hor inta aanad tirtirin asalka. Hadday jawaabtu haa tahay, create_before_destroy ayaa ku caawin kara Isla natiijadaas waxaa lagu gaari karaa gacanta iyadoo la fulinayo laba tillaabo: marka hore ku dar kheyraad cusub qaabeynta oo socodsii amarka codso, ka dibna ka saar kheyraadka hore qaabeynta oo mar kale adeegso amarka codso.
    • Beddelida aqoonsiga waxay u baahan tahay isbedel. Haddii aad rabto inaad bedesho aqoonsiga laxidhiidha kheyraadka (tusaale, dib ugu magacaw aws_security_group tusaale ahaan una gudbi cluster_intance) adiga oo aan tirtirin kheyraadka oo aan la abuurin nooc cusub, waa in aad cusboonaysiisaa faylka gobolka Terraform si waafaqsan. Weligaa tan gacanta ha ku samayn - beddelka isticmaal taliska gobolka terraform. Markaad dib u magacawdo aqoonsiga, waa inaad socodsiisaa amarka mv state terraform, kaas oo leh syntax soo socda:
      terraform state mv <ORIGINAL_REFERENCE> <NEW_REFERENCE>

      ORIGINAL_REFERENCE waa tibaax tilmaamaysa agabka qaabka uu hadda yahay, NEW_REFERENCE waa meesha aad rabto inaad ka guurto. Tusaale ahaan, marka magaca kooxda aws_security_group tusaale ahaan loo beddelayo cluster_intance, waxaad u baahan tahay inaad socodsiiso amarkan soo socda:

      $ terraform state mv 
         aws_security_group.instance 
         aws_security_group.cluster_instance

      Tani waxay u sheegaysaa Terraform in gobolka markii hore lala xidhiidhin jiray aws_security_group.tusaale waa in hadda lala xidhiidhiyaa aws_security_group.cluster_intance. Haddii ka dib magaca beddelka iyo socodsiinta amarkan qorshaha terraform uusan muujin wax isbeddel ah, markaa wax walba si sax ah ayaad u samaysay.

    • Dejinta qaarkood lama bedeli karo Halbeegyada kheyraadka badan ayaa ah kuwo aan isbeddelin. Haddii aad isku daydo inaad bedesho, Terraform waxay tirtiri doontaa kheyraadkii hore oo waxay ku abuuri doontaa mid cusub meesheeda. Bog kasta oo kheyraad ah ayaa sida caadiga ah tilmaamaya waxa dhacaya marka aad beddesho goob gaar ah, markaa hubi inaad hubiso dukumentiyada. Had iyo jeer adeegso amarka qorshaha oo ka fiirso isticmaalka creation_before_destroy

    Joogteynta dib loo dhigay waa mid joogto ah... oo leh dib udhigid

    Qaar ka mid ah bixiyayaasha daruuraha API-yada, sida AWS, waa isku mid oo waxay daahiyeen joogteynta Asynchrony macnaheedu waa in interface-ku isla markiiba soo celin karo jawaabta iyada oo aan la sugin ficilka la codsaday inuu dhammaystiro. Joogteynta daahitaanka macnaheedu waa in isbedelku uu qaadan karo waqti si uu ugu faafo nidaamka oo dhan; Inta ay tani dhacayso, jawaabahaagu waxay noqon karaan kuwo aan iswaafaqsanayn oo ay ku xidhan yihiin nuqulka xogta ee ka jawaabaya wicitaanadaada API.

    Bal qiyaas, tusaale ahaan, inaad wacdo API AWS adoo waydiinaya inay abuurto server EC2. API-gu wuxuu soo celin doonaa jawaabta "guulaystay" (201 Created) ku dhawaad ​​isla markiiba, iyada oo aan la sugin serfarka laftiisa in la abuuro. Haddii aad isku daydo inaad isla markiiba ku xirto, waxay ku dhowdahay inay ku guuldareysato sababtoo ah wakhtigaas AWS ayaa wali bilaabaya agabka ama, beddelkeeda, server-ku weli ma kicin. Intaa waxaa dheer, haddii aad sameyso wicitaan kale si aad u hesho macluumaadka ku saabsan server-kan, waxaa laga yaabaa inaad hesho qalad (404 Lama Helin). Shaydu waxay tahay in macluumaadka ku saabsan server-kan EC2 laga yaabo in wali lagu faafiyo AWS oo dhan ka hor inta aan laga helin meel kasta, waa inaad sugtaa dhowr ilbiriqsi.

    Mar kasta oo aad isticmaasho API asynchronous leh caajis joogto ah, waa in aad mar mar isku daydaa codsigaaga ilaa ficilku ka dhammeeyo oo uu ku faafo nidaamka. Nasiib darro, AWS SDK ma bixiso wax qalab ah oo tan ah, iyo mashruuca Terraform-ka waxaa loo isticmaali jiray in ay la kulmaan kutaanno badan sida 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

    Si kale haddii loo dhigo, waxaad abuurtaa kheyraad (sida subnet) ka dibna isku day inaad hesho macluumaad ku saabsan (sida aqoonsiga subnet-ka cusub ee la sameeyay), Terraform-na ma heli karo. Inta badan cayayaankan (oo ay ku jiraan 6813) waa la hagaajiyay, laakiin wali way soo baxaan waqti ka waqti, gaar ahaan marka Terraform ay ku darto taageerada nooc cusub oo kheyraad ah. Tani waa wax laga xumaado, laakiin inta badan kiisaska wax dhibaato ah ma keento. Marka aad ordo terraform mar kale codso, wax walba waa inay shaqeeyaan, maadaama waqtigan la gaaro akhbaartu mar hore ayay ku faafi doontaa nidaamka oo dhan.

    Nuqulkan waxa soo bandhigay buugga Evgeniy Brikman "Teraform: kaabayaasha heerka code".

Source: www.habr.com

Add a comment