ใช้เวิร์กโฟลว์แบบอัตโนมัติ

เสร็จสมบูรณ์เมื่อ

ในหน่วยนี้ คุณจะได้เรียนรู้เกี่ยวกับเครื่องมือเวิร์กโฟลว์อัตโนมัติและวิธีการรวมกับ Terraform และ Azure

เกี่ยวกับการดําเนินการ GitHub

ในฐานะผู้จัดการโครงสร้างพื้นฐาน คุณจําเป็นต้องมีเวิร์กโฟลว์การสร้างและการปรับใช้เพื่อใช้การควบคุมเวอร์ชันเดียวกันกับโครงการของคุณ

ด้วยการใช้ การดําเนินการ GitHub คุณสามารถเรียกใช้การรวมอย่างต่อเนื่องและกระบวนการส่งมอบ (CI/CD) แบบต่อเนื่องที่เชื่อมโยงกับพื้นที่เก็บ GitHub ของคุณ

ด้วยการดําเนินการ 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

แผนภาพของแนวคิดหลักและคอมโพเนนต์ใน Azure Pipeline

  • ทริกเกอร์ บอกให้ไปป์ไลน์เรียกใช้
  • ไปป์ไลน์สร้างขึ้นจากอย่างน้อยหนึ่งขั้นตอน ไปป์ไลน์สามารถปรับใช้กับสภาพแวดล้อม อย่างน้อยหนึ่งรายการ
  • ลําดับขั้นคือวิธีการจัดระเบียบงานในไปป์ไลน์และแต่ละลําดับขั้นสามารถมีงาน อย่างน้อยหนึ่งงาน
  • งานแต่ละงานจะรันบนตัวแทน หนึ่ง งานยังสามารถ แบบไม่มีตัวแทน
  • แต่ละตัวแทนทํางานที่ประกอบด้วยอย่างน้อยหนึ่งขั้นตอน
  • ขั้นตอนสามารถเป็นงาน หรือสคริปต์ และ เป็นแบบเอกสารสําเร็จรูปที่เล็กที่สุดของไปป์ไลน์
  • งาน คือสคริปต์ที่กําหนดไว้ล่วงหน้าซึ่งดําเนินการ เช่น การเรียก 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 ตัวแปรให้วิธีที่สะดวกในการรับบิตของข้อมูลที่สําคัญลงในส่วนต่าง ๆ ของไปป์ไลน์

คุณสามารถตั้งค่าตัวแปรสําหรับไปป์ไลน์รุ่นได้โดยทําตามขั้นตอนเหล่านี้:

  1. ไปที่หน้า ไปป์ไลน์ เลือกไปป์ไลน์ที่เหมาะสม และเลือก แก้ไข
  2. ค้นหา ตัวแปร สําหรับไปป์ไลน์นี้
  3. เพิ่มหรืออัปเดตตัวแปร
  4. หากต้องการทําเครื่องหมายตัวแปรเป็นข้อมูลลับ ให้เลือก เก็บค่าลับนี้ไว้
  5. บันทึกไปป์ไลน์

ผลลัพธ์ของ Terraform ไปยังตัวแปรไปป์ไลน์

งาน TerraformCLI รองรับการเรียกใช้คําสั่ง output Terraform เมื่อ CLI ทํางาน ตัวแปรไปป์ไลน์จะถูกสร้างขึ้นจากตัวแปรเอาต์พุตแต่ละตัวที่ปล่อยออกมาจากคําสั่ง terraform output

ขั้นตอนถัดไป

ในหน่วยถัดไป เราจะตั้งค่าโครงการตัวอย่างและใช้ Azure Pipelines กับ Terraform เพื่อปรับใช้กับ Azure