ใช้เวิร์กโฟลว์แบบอัตโนมัติ
ในหน่วยนี้ คุณจะได้เรียนรู้เกี่ยวกับเครื่องมือเวิร์กโฟลว์อัตโนมัติและวิธีการรวมกับ Terraform และ Azure
เกี่ยวกับการดําเนินการ GitHub
ในฐานะผู้จัดการโครงสร้างพื้นฐาน คุณจําเป็นต้องมีเวิร์กโฟลว์การสร้างและการปรับใช้เพื่อใช้การควบคุมเวอร์ชันเดียวกันกับโครงการของคุณ
ด้วยการใช้ การดําเนินการ GitHub คุณสามารถเรียกใช้การรวมอย่างต่อเนื่องและกระบวนการส่งมอบ (CI/CD) แบบต่อเนื่องที่เชื่อมโยงกับพื้นที่เก็บ GitHub ของคุณ
ด้วยการดําเนินการ GitHub คุณสามารถสร้าง ทดสอบ และปรับใช้รหัสของคุณได้โดยตรงจาก GitHub นอกจากนี้คุณยังสามารถกําหนดการตรวจสอบรหัส จัดการสาขา และปัญหาความลําบากได้
คอมโพเนนต์การดําเนินการ GitHub
เรามาอธิบายคอมโพเนนต์การดําเนินการ GitHub ต่าง ๆ ดังที่แสดงในไดอะแกรมต่อไปนี้:
- เวิร์กโฟลว์: ทริกเกอร์โดยเหตุการณ์หรือกิจกรรมบางอย่าง เวิร์กโฟลว์คือคอลเลกชันของงานและขั้นตอนที่ทําให้งานวงจรชีวิตการพัฒนาซอฟต์แวร์เป็นแบบอัตโนมัติ
- งาน : ชุดของขั้นตอนที่ดําเนินการบนรันเนอร์
- ขั้นตอนที่: งานที่สามารถเรียกใช้คําสั่งหรือการดําเนินการอย่างน้อยหนึ่งรายการ แต่ละขั้นตอนสร้างขึ้นจากการดําเนินการแต่ละรายการที่ทํางานหลังจากเกิดเหตุการณ์เฉพาะ เช่น คําขอดึงข้อมูล
- Action: คําสั่งแบบสแตนด์อโลนที่สามารถรวมเป็นขั้นตอนได้ สามารถรวมหลายขั้นตอนเพื่อสร้างงาน การดําเนินการแต่ละรายการคือสคริปต์ที่รวมเป็นแพคเกจซึ่งทํางานการพัฒนาซอฟต์แวร์โดยอัตโนมัติ เมื่อต้องการสร้างเวิร์กโฟลว์ คุณเพิ่มการดําเนินการไปยังไฟล์ YAML ใน .github/เวิร์กโฟลว์ ไดเรกทอรีในที่เก็บ GitHub ของคุณ
การดําเนินการ GitHub บน Terraform
การดําเนินการ hashicorp/setup-terraform ตั้งค่า Terraform CLI ในเวิร์กโฟลว์การดําเนินการ GitHub ของคุณโดย:
- ดาวน์โหลด Terraform CLI เวอร์ชันเฉพาะและเพิ่มลงใน
PATH - การกําหนดค่าไฟล์การกําหนดค่า Terraform CLI ด้วย Terraform Cloud หรือชื่อโฮสต์ Enterprise และโทเค็น API
- การติดตั้งสคริปต์ Wrapper เพื่อตัดการเรียกใช้ไบนารี
terraformในภายหลัง และแสดง STDOUT, STDERR และออกจากรหัสเป็นเอาต์พุตที่ชื่อstdoutstderrและexitcodeตามลําดับ
รับรองความถูกต้องของการดําเนินการ GitHub กับ Azure
Terraform สนับสนุนตัวเลือกมากมายสําหรับการรับรองความถูกต้องกับ Azure:
- เมื่อคุณใช้ Terraform แบบโต้ตอบ เราขอแนะนําให้คุณรับรองความถูกต้องผ่านบัญชี Microsoft
- เมื่อคุณใช้ Terraform จากรหัสหรือโดยระบบอัตโนมัติ เราขอแนะนําให้คุณรับรองความถูกต้องผ่าน Azure Service Principal
บริการหลักคือข้อมูลประจําตัวสําหรับใช้กับแอปพลิเคชัน บริการที่เป็นโฮสต์ และเครื่องมืออัตโนมัติเพื่อเข้าถึงทรัพยากร Azure
ขั้นตอนถัดไป
ในหน่วยถัดไป เราจะตั้งค่าโครงการตัวอย่างและใช้การดําเนินการ GitHub ด้วย Terraform เพื่อปรับใช้กับ Azure
แนวคิดหลักสําหรับไปป์ไลน์ Azure ใหม่
ลองเรียนรู้เกี่ยวกับคอมโพเนนต์ที่ประกอบเป็นไปป์ไลน์ Azure
- ทริกเกอร์ บอกให้ไปป์ไลน์เรียกใช้
- ไปป์ไลน์สร้างขึ้นจากอย่างน้อยหนึ่งขั้นตอน ไปป์ไลน์สามารถปรับใช้กับสภาพแวดล้อม อย่างน้อยหนึ่งรายการ
- ลําดับขั้นคือวิธีการจัดระเบียบงานในไปป์ไลน์และแต่ละลําดับขั้นสามารถมีงาน อย่างน้อยหนึ่งงาน
- งานแต่ละงานจะรันบนตัวแทน หนึ่ง งานยังสามารถ แบบไม่มีตัวแทน
- แต่ละตัวแทนทํางานที่ประกอบด้วยอย่างน้อยหนึ่งขั้นตอน
- ขั้นตอนสามารถเป็นงาน หรือสคริปต์ และ เป็นแบบเอกสารสําเร็จรูปที่เล็กที่สุดของไปป์ไลน์
- งาน คือสคริปต์ที่กําหนดไว้ล่วงหน้าซึ่งดําเนินการ เช่น การเรียก REST API หรือการเผยแพร่อาร์ติแฟกต์บิลด์
- วัตถุ คือคอลเลกชันของไฟล์หรือแพคเกจที่เผยแพร่โดยการเรียกใช้
ปลาย
สําหรับข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับคอมโพเนนต์ไปป์ไลน์ที่แตกต่างกันและวิธีการใช้งาน ดูลิงก์ที่มีให้ในส่วนสรุป
งาน Terraform สําหรับไปป์ไลน์ Azure
เมื่อดําเนินการคําสั่งที่โต้ตอบกับ Azure เช่น plan, applyและ destroyงานจะใช้ Azure Service Connection เพื่ออนุญาตการดําเนินการกับการสมัครใช้งานเป้าหมาย
วิธีที่แนะนําในการเชื่อมต่อกับ Azure จะผูกการเชื่อมต่อบริการกับ Azure Service Principal Azure Service Principal เป็นข้อมูลประจําตัวที่คุณสร้างเพื่อใช้เครื่องมืออัตโนมัติเพื่อเข้าถึงทรัพยากร Azure
ส่วนย่อย YAML ต่อไปนี้ใช้ตัวให้บริการ Azure Pipeline Terraform azurerm การเชื่อมต่อบริการจะถูกระบุผ่านการป้อนข้อมูล environmentServiceNameAzureRM:
- task: TerraformTaskV1@0
inputs:
provider: 'azurerm'
command: 'apply'
workingDirectory: $(Build.Repository.LocalPath)/terraform
backendAzureRmContainerName: 'tfstate'
backendAzureRmKey: 'tf/terraform.tfstate'
environmentServiceNameAzureRM: $(serviceConnection)
ปลาย
ถ้าคุณใช้ azurerm เป็นผู้ให้บริการ Azure Pipeline Terraform คุณยังจําเป็นต้องใส่การเชื่อมต่อบริการและที่เก็บข้อมูลคอนเทนเนอร์เพื่อใช้กับ backend Terraform สถานะ
พารามิเตอร์การส่งผ่าน
มีหลายวิธีในการส่งผ่านพารามิเตอร์ไปยังคําสั่ง Terraform ตัวแปรให้วิธีที่สะดวกในการรับบิตของข้อมูลที่สําคัญลงในส่วนต่าง ๆ ของไปป์ไลน์
คุณสามารถตั้งค่าตัวแปรสําหรับไปป์ไลน์รุ่นได้โดยทําตามขั้นตอนเหล่านี้:
- ไปที่หน้า ไปป์ไลน์ เลือกไปป์ไลน์ที่เหมาะสม และเลือก แก้ไข
- ค้นหา ตัวแปร สําหรับไปป์ไลน์นี้
- เพิ่มหรืออัปเดตตัวแปร
- หากต้องการทําเครื่องหมายตัวแปรเป็นข้อมูลลับ ให้เลือก เก็บค่าลับนี้ไว้
- บันทึกไปป์ไลน์
ผลลัพธ์ของ Terraform ไปยังตัวแปรไปป์ไลน์
งาน TerraformCLI รองรับการเรียกใช้คําสั่ง output Terraform เมื่อ CLI ทํางาน ตัวแปรไปป์ไลน์จะถูกสร้างขึ้นจากตัวแปรเอาต์พุตแต่ละตัวที่ปล่อยออกมาจากคําสั่ง terraform output
ขั้นตอนถัดไป
ในหน่วยถัดไป เราจะตั้งค่าโครงการตัวอย่างและใช้ Azure Pipelines กับ Terraform เพื่อปรับใช้กับ Azure