ผู้ให้บริการ Terraform

Phu Hi Brikar Terraform



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

บทความนี้กล่าวถึงวิธีใช้และกำหนดค่าผู้ให้บริการต่างๆ เพื่อโต้ตอบกับแพลตฟอร์มและบริการคลาวด์ต่างๆ

ข้อมูลเบื้องต้นเกี่ยวกับผู้ให้บริการ Terraform

ผู้ให้บริการ Terraform เป็นปลั๊กอินที่ช่วยให้เราสามารถโต้ตอบกับแพลตฟอร์มและบริการคลาวด์ต่างๆ โดยใช้ Terraform ผู้ให้บริการเหล่านี้มีหน้าที่รับผิดชอบในการแปลการกำหนดค่า Terraform เป็นการเรียก API ซึ่งจำเป็นในการจัดการทรัพยากรบนแพลตฟอร์มหรือบริการคลาวด์เฉพาะ







ประเภทของผู้ให้บริการใน Terraform

ใน รีจิสทรี Terraform เราสามารถเห็นผู้ให้บริการสามประเภท:



ผู้ให้บริการอย่างเป็นทางการ

ผู้ให้บริการอย่างเป็นทางการดูแลโดยบริษัท HashiCorp ซึ่งเป็นเจ้าของ Terraform ผู้ให้บริการเหล่านี้เป็นตัวเลือกที่ดีที่สุดหากเราต้องการผู้ให้บริการที่มีเอกสารครบถ้วนและเป็นปัจจุบัน



ผู้ให้บริการ AWS, Microsoft Azure และ Google Cloud Platform สามารถเป็นตัวอย่างผู้ให้บริการอย่างเป็นทางการใน Terraform





ผู้ให้บริการพันธมิตร

องค์กรบุคคลที่สามดูแลผู้ให้บริการเหล่านี้และได้ร่วมมือกับ HashiCorp เพื่อให้การสนับสนุนอย่างเป็นทางการสำหรับบริการของพวกเขา

ผู้ให้บริการ GitLab, MongoDB และ CloudFlare เป็นผู้ให้บริการพันธมิตรบางรายที่มีให้สำหรับผู้ใช้



ผู้ให้บริการชุมชน

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

ตัวอย่างของผู้ให้บริการชุมชนแสดงในภาพต่อไปนี้:

วิธีใช้ผู้ให้บริการ Terraform

ในการใช้ผู้ให้บริการ Terraform เราจำเป็นต้องรวมบล็อกผู้ให้บริการไว้ในไฟล์การกำหนดค่าซึ่งระบุผู้ให้บริการที่เราต้องการใช้และพารามิเตอร์การกำหนดค่าที่จำเป็น เช่น ข้อมูลรับรองหรือภูมิภาค

เมื่อกำหนดค่าผู้ให้บริการแล้ว เราสามารถใช้ทรัพยากรและแหล่งข้อมูลที่ให้บริการโดยผู้ให้บริการในการกำหนดค่า Terraform เพื่อจัดการทรัพยากรบนแพลตฟอร์มคลาวด์หรือบริการ

มาสร้างไฟล์การกำหนดค่า Terraform อย่างง่ายที่สร้างอินสแตนซ์ EC2 ในแพลตฟอร์มคลาวด์ AWS

ผู้ให้บริการ 'อ๊าส์' {

รุ่น = '~> 3.0'

ภูมิภาค = 'เรา-ตะวันออก-2'

}

ทรัพยากร 'aws_อินสแตนซ์' 'myEC2' {

ซึ่ง = 'ami-0a561b65214a47cac'

instance_type = 't3. เล็ก'

แท็ก = {

ชื่อ = 'อินสแตนซ์ใหม่'

}

}

อันดับแรก เรากำหนดบล็อกผู้ให้บริการ โดยระบุผู้ให้บริการ AWS และภูมิภาคที่สร้างทรัพยากร จากนั้น เรากำหนดบล็อกทรัพยากรของเราโดยประกอบด้วย aws_instance เป็นประเภททรัพยากร “myEC2” เป็นชื่อทรัพยากร และ “ami”, “instance_type” และ “tags” เป็นแอตทริบิวต์ ประเภททรัพยากรสามารถแบ่งออกเป็นสองส่วน: ผู้ให้บริการและทรัพยากร ในกรณีนี้ 'aws' คือผู้ให้บริการ และ 'อินสแตนซ์' คือทรัพยากร นอกจากนี้ ถ้ามีคนต้องการจัดเตรียมอินสแตนซ์ EC2 สิบอินสแตนซ์ แอตทริบิวต์ 'count' สามารถใช้กับสิบเป็นค่าได้

ตอนนี้ เราสามารถดำเนินการโฟลว์ Terraform ซึ่งรวมถึงการดำเนินการคำสั่ง terraform init, terraform plan และ terraform apply เพื่อสร้างทรัพยากรที่เรากำหนดไว้

เมื่อใช้ผู้ให้บริการ Terraform AWS เราสามารถเข้าถึงแพลตฟอร์มคลาวด์ AWS และโต้ตอบกับบริการได้อย่างมีประสิทธิภาพโดยไม่ต้องใช้ AWS Management Console

การใช้ผู้ให้บริการหลายรายใน Terraform

แทนที่จะใช้ผู้ให้บริการรายเดียว Terraform ช่วยให้เราใช้ผู้ให้บริการหลายรายภายในไฟล์กำหนดค่า Terraform เดียวกันเพื่อโต้ตอบกับบริการประเภทต่างๆ และแพลตฟอร์มคลาวด์

เพื่อความเข้าใจของคุณ ลองมาดูตัวอย่างที่เราปรับใช้กลไกประมวลผลใน Google Cloud Platform พื้นที่เก็บข้อมูลใน GitHub และบัคเก็ต S3 ในแพลตฟอร์ม AWS Cloud

ผู้ให้บริการ 'Google' {

โครงการ = 'โครงการแรก'

ภูมิภาค = 'us-west1'

}

ผู้ให้บริการ 'github' {

โทเค็น = 'YOUR_GITHUB_TOKEN'

}

ผู้ให้บริการ 'อ๊าส์' {

รุ่น = '~> 3.0'

ภูมิภาค = 'เรา-ตะวันตก-2'

}

ทรัพยากร 'google_compute_instance' 'อินสแตนซ์ gcp' {

ชื่อ = 'อินสแตนซ์ใหม่'

machine_type = 'n1-มาตรฐาน-1'

โซน = 'เรา-west1-a'

boot_disk {

initialize_params {

ภาพ = 'เดเบียน-คลาวด์/เดเบียน-10'

}

}

}

ทรัพยากร 'github_repository' 'gitRepo' {

ชื่อ = 'repo ใหม่'

คำอธิบาย = 'นี่คือที่เก็บใหม่ของฉัน'

}

ทรัพยากร 'aws_s3_bucket' 'awsBucket' {

ถัง = 'ถังใหม่'

เอซีแอล = 'ส่วนตัว'

}

ในขั้นตอนแรก เรากำหนดการบล็อกผู้ให้บริการของเราเพื่อระบุผู้ให้บริการ (Google, GitHub และ AWS) และข้อมูลที่จำเป็น เช่น ภูมิภาค ชื่อโครงการ ฯลฯ จากนั้น เราจะประกาศทรัพยากรของเราโดยใช้บล็อกทรัพยากรสามกลุ่ม: “gcpInstance”, “ gitRepo” และ “awsBucket”

ขั้นแรก เราสร้างเครื่องมือประมวลผลใน Google Cloud Platform โดยมี 'new-instance' เป็นชื่อ 'n1-standard-1' เป็นประเภทเครื่อง และ 'us-west1-a' เป็นโซนความพร้อมใช้งาน ใช้ Debian เป็น OS โฮสต์ จากนั้น เราสร้างที่เก็บ GitHub ชื่อ “new-repo” และคำอธิบายที่เหมาะสม สุดท้าย บัคเก็ต S3 ถูกสร้างขึ้นโดยใช้ 'new-bucket' เป็นชื่อและ 'ส่วนตัว' เป็นค่า ACL (Access Control List)

ด้วยผู้ให้บริการ Terraform สามรายดังกล่าว เราสามารถโต้ตอบกับแพลตฟอร์มคลาวด์และบริการของพวกเขาได้อย่างง่ายดาย

แนวทางปฏิบัติที่ดีที่สุดสำหรับการทำงานร่วมกับผู้ให้บริการ Terraform

การกำหนดเวอร์ชันของผู้ให้บริการ

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

การรับรองความถูกต้องของผู้ให้บริการ

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

เอกสารของผู้ให้บริการ

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

การปรับปรุงผู้ให้บริการ

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

การสนับสนุนชุมชน

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

การจัดการข้อผิดพลาดและการแก้ไขปัญหา

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

บทสรุป

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