Documente Terraform Cloud acoperiți acest lucru și nu este interzis, dar nici nu este tocmai încurajat. Există 2 metode menționate în acele documente, folosind a local-exec
provider (a cărui utilizare este descrisă ca o „ultimă soluție” și potențial problematică), sau folosind a submodul. Documentele menționează, de asemenea, că ar trebui folosite numai „Standalone Binaries”. din fericire aws-iam-authenticator
este într-adevăr disponibil ca un binar static autonom pentru multe sisteme. Din păcate, documentația, dincolo de o mențiune a submodulelor, nu acoperă pașii necesari pentru ca acest lucru să funcționeze.
Sperăm că Hashicorp va oferi o modalitate mai puțin hacker și mai susținută de a personaliza aceste medii în viitor, dar până atunci...
În primul rând, avem nevoie de un binar compatibil și, deși nu știm exact ce sistem de operare/imagine rulează instanțele Terraform Cloud, știm din documentatia că este compatibil Linux x86_64. Prin urmare, din moment ce aws-iam-authenticator
este disponibil ca un binar static autonom pentru Linux x86_64, ceea ce trebuie să facem este să introducem acel binar în mediu și apoi să îl punem la dispoziție instanței în general (din moment ce nu controlăm modul în care este numit în mod specific).
Terraform Cloud vă permite să manipulați variabilele de mediu, putem realiza acest lucru prin manipularea $PATH
variabilă odată ce avem binarul pe gazdă. Cel mai simplu mod de a face acest lucru ar fi să adăugați binarul la configurația dintr-un folder, totuși, dacă doriți să utilizați acest lucru pentru mai multe configurații, fără a fi nevoie să gestionați binarul separat în fiecare (imaginați-vă că trebuie să le actualizați pe toate separat), Aș recomanda să faceți acest lucru ca sub-modul în depozitul dvs. git.
Iată un exemplu de a repo public care conține binarul, ați adăuga acest lucru la repo-ul dvs. ca submodul, după cum urmează:
submodulul git adaugă https://github.com/comerford/tc-tools.git
Puteți apoi să commiteți/împingeți ca de obicei, asigurându-vă că setările de control al versiunii pentru spațiul dvs. de lucru sunt setate pentru a clona submodulele după cum urmează:
În cele din urmă, pentru a vă asigura că, indiferent de cum se numește binarul, trebuie să faceți modificări la CALE
variabilă de mediu, astfel încât să vadă noul dvs. binar, dar, de asemenea, să nu rupă nimic. Iată ENV
variabilă care a funcționat pentru mine având în vedere submodulul de mai sus:
Pentru a da acel șir într-un format mai utilizabil:
„~/tc-tools:/home/terraform/tc-tools:./tc-tools:/usr/bin:/usr/local/bin:/bin:$PATH”
Este nevoie de o ghicire a căilor probabile și nu sunt 100% sigur care dintre ele funcționează, deoarece nu am vrut să provoc rulări întrerupte de dragul câtorva personaje.
Deși acest lucru este special pentru aws-iam-authenticator
binar, ar trebui să funcționeze ca metodă generică pentru orice astfel de binar static Linux x86_64 de care aveți nevoie.