Score:0

ฉันจะเขียนเทมเพลต Terraform ที่บำรุงรักษาได้อย่างไร

ธง cn

สำหรับบริษัทของฉัน ฉันได้รับมอบหมายให้สร้างการกำหนดค่ามาตรฐานและเทมเพลตสำหรับคลัสเตอร์ Kubernetes (EKS) ใน Terraform ที่ปรับใช้ได้โดยใช้ GitLab CI/CD การปรับใช้และการกำหนดค่าเสร็จสิ้นไประยะหนึ่งแล้ว แต่ฉันประสบปัญหาด้านเทมเพลต

นี่คืองานของฉัน: สร้างโครงการเทมเพลต/พื้นที่เก็บข้อมูลที่มีการกำหนดค่าที่บุคคลอื่นสามารถคัดลอกและแก้ไขได้

อย่างไรก็ตาม ฉันต้องสามารถอัปเดตการกำหนดค่าของฉันให้ตรงกับรุ่นหรือคุณสมบัติใหม่ในอนาคต จากนั้นพวกเขาจำเป็นต้องโคลน/คัดลอก/รวมเทมเพลตของฉันกลับเข้าไปในการกำหนดค่าโดยไม่ต้องเขียนทับการกำหนดค่าเฉพาะ

ฉันได้ขอคำแนะนำจากนักพัฒนาอาวุโสคนหนึ่ง และเขาแนะนำให้ฉันสร้างไฟล์การกำหนดค่าประเภทหนึ่ง (เช่น ไฟล์ .tfvars สำหรับ Terraform) ซึ่งการกำหนดค่าเฉพาะสามารถเข้าไปได้ จากนั้นฉันจึงสามารถสรุปเทมเพลตและอัปเดตได้ โดยไม่กระทบต่อการกำหนดค่าในอนาคต สิ่งนี้จะใช้งานได้บนพื้นผิวและตอนนี้ แต่เมื่อมีการเพิ่มคุณสมบัติและคำขอที่เฉพาะเจาะจงมากขึ้นสำหรับฉัน สิ่งนี้จะกลายเป็นสิ่งที่ไม่สามารถบำรุงรักษาได้มากขึ้นในอนาคต
อีกทางเลือกหนึ่งคือการใช้โมดูล Terraform แต่สิ่งนี้ต้องทนทุกข์ทรมานจากผลข้างเคียงที่เป็นไปได้แบบเดียวกัน นั่นคือการเติบโตที่ยุ่งเหยิงที่ดูแลไม่ได้ในภายหลัง

ดังนั้นฉันจึงสูญเสียที่นี่สิ่งนี้ดูเหมือนจะไม่สามารถบำรุงรักษาได้มากนักสำหรับฉันหรือพวกเขาในอนาคต สิ่งสำคัญที่สุดคือ เมื่อมีการอัปเดตเวอร์ชันหลักสำหรับเทมเพลตของฉัน การกำหนดค่าจะเสียหายอย่างแน่นอนโดยที่ฉันไม่มีทางแก้ไขได้โดยไม่ต้องใช้แรงงานคนมากนัก ฉันต้องการทำงานเพิ่มอีกเล็กน้อยในตอนนี้ เพื่อให้สามารถบำรุงรักษาได้ในอนาคตโดยทำงานให้น้อยที่สุดเท่าที่จะทำได้ แต่ฉันไม่สามารถหาทางออกที่ดีได้

ดังนั้นคำถามของฉันจึงกลายเป็น: ฉันจะสร้างเทมเพลตคลัสเตอร์ Terraform Kubernetes ที่บำรุงรักษาได้อย่างถูกต้องได้อย่างไร ซึ่งฉันสามารถอัปเดตโดยใช้ความพยายามน้อยที่สุดในอนาคตได้อย่างไร

Score:1
ธง ph

โมดูล Terraform เป็นกลไกที่มีไว้สำหรับการสรุปชุดของการประกาศในรูปแบบที่นำมาใช้ใหม่ได้

คุณกล่าวว่าข้อกังวลหลักของคุณคือคุณสมบัติที่เพิ่มในภายหลังอาจทำให้โมดูลเติบโตเป็น "ความยุ่งเหยิงที่ดูแลไม่ได้" นั่นเป็นปัญหาการออกแบบทั่วไปที่ผู้ดูแลโค้ดที่ใช้ซ้ำได้ต้องจัดการ: สำหรับฟีเจอร์ใหม่แต่ละรายการที่มีคนร้องขอ คุณจะต้องหาวิธีรวมเข้ากับการออกแบบที่มีอยู่หรือประกาศว่าฟีเจอร์นั้นอยู่นอกขอบเขตและจัดเตรียม วิธีแก้ไขปัญหานั้นแยกต่างหาก เช่น โมดูลอื่นที่ตั้งใจจะใช้ควบคู่ไปกับโมดูลแรก

ไม่มีคำตอบที่เป็นสากลสำหรับปัญหาการบำรุงรักษาโค้ดที่ใช้ร่วมกันอย่างต่อเนื่อง ไม่ว่าจะเป็นใน Terraform หรืออย่างอื่น แต่ส่วนเอกสาร Terraform องค์ประกอบโมดูล อธิบายถึงรูปแบบการแบ่งปัญหาออกเป็นส่วนย่อย ๆ ที่สามารถประกอบเข้าด้วยกันในรูปแบบต่าง ๆ ได้

นั่นเป็นวิธีทั่วไปที่ผู้เขียนโมดูลจะหลีกเลี่ยงปัญหาที่คุณกังวลเกี่ยวกับการที่โมดูลเดียวมีจำนวนมากขึ้นกว่าที่ออกแบบไว้ในตอนแรก: คุณสามารถเสนอโมดูลหลายโมดูลให้กับผู้ใช้ของคุณ ซึ่งพวกเขาสามารถรวมเข้าด้วยกันในรูปแบบต่างๆ เพื่อ จัดการกับสถานการณ์ต่างๆ เพื่อให้ผู้ใช้ที่ไม่ต้องการคุณสมบัติบางอย่างสามารถข้ามรวมถึงโมดูลที่สอดคล้องกันในขณะที่ยังคงใช้โมดูลอื่นๆ ได้

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา