เอกสาร Terraform Cloud ครอบคลุมสิ่งนี้และไม่ได้ห้าม แต่ก็ไม่สนับสนุนเช่นกัน มี 2 วิธีที่กล่าวถึงในเอกสารเหล่านั้น โดยใช้ a ผู้บริหารท้องถิ่น
ผู้จัดเตรียม (การใช้ซึ่งอธิบายว่าเป็น "ทางเลือกสุดท้าย" และอาจเป็นปัญหาได้) หรือการใช้ a โมดูลย่อย. เอกสารยังระบุด้วยว่าควรใช้เฉพาะ "ไบนารีแบบสแตนด์อโลน" เท่านั้น ขอบคุณ aws-iam-authenticator
มีอยู่ในรูปแบบไบนารีแบบสแตนด์อโลนแบบสแตติกสำหรับระบบจำนวนมาก น่าเสียดายที่เอกสารนอกเหนือจากการกล่าวถึงโมดูลย่อยนั้นไม่ครอบคลุมถึงขั้นตอนที่จำเป็นในการทำงานนี้
หวังว่า Hashicorp จะให้วิธีการแฮ็คน้อยลงและได้รับการสนับสนุนมากขึ้นในการปรับแต่งสภาพแวดล้อมเหล่านี้ในอนาคต แต่จนกว่าจะถึงตอนนั้น...
อันดับแรก เราต้องมีไบนารีที่เข้ากันได้ และแม้ว่าเราจะไม่ทราบแน่ชัดว่า OS/Image ใดที่รันโดยอินสแตนซ์ Terraform Cloud แต่เราทราบจาก เอกสาร ว่ามันเข้ากันได้กับ Linux x86_64 ดังนั้น ตั้งแต่ aws-iam-authenticator
พร้อมใช้งานเป็นไบนารีคงที่แบบสแตนด์อโลนสำหรับ Linux x86_64 สิ่งที่เราต้องทำคือแนะนำไบนารีนั้นในสภาพแวดล้อม จากนั้นทำให้พร้อมใช้งานสำหรับอินสแตนซ์โดยทั่วไป (เนื่องจากเราไม่ได้ควบคุมวิธีการเรียกมันโดยเฉพาะ)
Terraform Cloud อนุญาตให้คุณจัดการตัวแปรสภาพแวดล้อม เราสามารถทำได้โดยการจัดการ $เส้นทาง
ตัวแปรเมื่อเรามีไบนารีในโฮสต์ วิธีที่ง่ายที่สุดในการทำเช่นนี้คือเพิ่มไบนารีลงในการกำหนดค่าภายในโฟลเดอร์ อย่างไรก็ตาม หากคุณต้องการใช้สิ่งนี้สำหรับการกำหนดค่าหลายรายการโดยไม่ต้องจัดการไบนารีแยกกันในแต่ละไฟล์ (ลองนึกภาพว่าต้องอัปเดตทั้งหมดแยกกัน) ฉันขอแนะนำให้ทำสิ่งนี้เป็นโมดูลย่อยในที่เก็บ git ของคุณ
นี่คือตัวอย่างของ repo สาธารณะที่มีไบนารีคุณจะเพิ่มสิ่งนี้ลงใน repo ของคุณเป็นโมดูลย่อยดังนี้:
git submodule เพิ่ม https://github.com/comerford/tc-tools.git
จากนั้น คุณสามารถคอมมิท/พุชได้ตามปกติ ตรวจสอบให้แน่ใจว่าการตั้งค่าการควบคุมเวอร์ชันสำหรับเวิร์กสเปซของคุณถูกตั้งค่าให้โคลนโมดูลย่อยตามด้านล่าง:
สุดท้าย เพื่อให้แน่ใจว่าไม่ว่าจะเรียกไบนารีว่าทำงานอย่างไร คุณต้องทำการเปลี่ยนแปลงกับ เส้นทาง
ตัวแปรสภาพแวดล้อมเพื่อที่จะเห็นไบนารีใหม่ของคุณ แต่ยังไม่ทำลายสิ่งใด นี่คือ ENV
ตัวแปรที่ใช้งานได้สำหรับฉันจากโมดูลย่อยด้านบน:
เพื่อให้สตริงนั้นอยู่ในรูปแบบที่ใช้งานได้มากขึ้น:
"~/tc-tools:/home/terraform/tc-tools:./tc-tools:/usr/bin:/usr/local/bin:/bin:$PATH"
เป็นการคาดเดาเส้นทางที่น่าจะเป็นไปได้ และฉันก็ไม่แน่ใจ 100% ว่าเส้นทางไหนใช้ได้ผล เพราะฉันไม่ต้องการทำให้การทำงานขาดตอนเพราะตัวละครบางตัว
แม้ว่านี่จะเป็นเฉพาะสำหรับ aws-iam-authenticator
ไบนารีควรทำงานเป็นวิธีการทั่วไปสำหรับไบนารีแบบคงที่ของ Linux x86_64 ที่คุณต้องการ