Terraform with Openstack

ใน Tutorials นี้จะเป็นการใช้ Terraform ในการสร้าง instance สำหรับผู้ที่ไม่เคยใช้ Terraform ในการทำ โดยจะเริ่ม Guide ตั้งเเต่สิ่งที่ต้องเตรียมก่อนสร้าง(Prerequisites) การหา data เเละ Resource ที่จำเป็น

Prerequisites

  • มี instance หรือ Devices ที่ติดตั้ง Terraform (How to installarrow-up-right)

  • การกำหนด Provider (OpenStack Providerarrow-up-right)

  • Data ที่ต้องใช้ใน Terraform (สามารถหาได้จาก space.nipa.cloudarrow-up-right)

    • Provider

      1. username and password : นำมาจากที่ผู้ใช้กรอกเข้าเว็ป portal

      2. tenant_id or tenant_name: เอาไว้ระบุ project ที่เราจะใช้งาน Terraform สามารถหาได้จาก project_id หรือ project_name

      3. Terraform version : รองรับversion >= 1.8.4

      4. Openstack version : รองรับversion ~> 2.0.0

      5. auth_url : ต้องใช้ url นี้ https://identity-api.nipa.cloudarrow-up-right ในการ Authentication

      6. region : เลือกพื้นที่ หรือ เขตในการสร้าง instance

    • Instance

      1. image_id หรือ image_name : ใช้สำหรับกำหนด OS ให้กับ instance

      2. flavor_id หรือ flavor_name : ใช้สำหรับกำหนด Machine Type ให้กับ instance

      3. availability_zone : ระบุพื้นที่ที่กำลังใช้งาน

        • NCP-BKK

        • NCP-BKK2

        • NCP-NON

        • NCP-KKN

      4. key_pair : จำเป็นต้องสร้าง key pair ก่อนจึงจะนำไปใช้งานได้

        1. ซึ่งเมื่อสร้างเสร็จเเล้วจะได้ไฟล์ .pem สามารถใช้ remote เข้า instance ด้วยคำสั่ง

        ssh -i [target = pathfile] username@hostname

      5. security_groups : สามารถระบุชื่อ security group เพื่อนำมาใช้ได้

    • Network

      1. network_id : เป็น id networkเเต่ละตัว ซึ่งสามารถนำไปใช้ในการสร้าง port เเละ subnet

      2. pool : เป็น External network ที่เป็น public ของเเต่ละ AZ ที่เราสามารถนำมาใช้สร้าง floating ip ใน Terraform

      3. port_id : id port ของ instance ตัวนั้นๆ

วิธีการสร้าง instance

  1. สร้างไฟล์ openstack_provider.tf

  1. เเก้ไขไฟล์ openstack_provider.tf ดังนี้

Note : สามารถอ่านข้อมูลเพิ่มเติมได้ที่ openstack providerarrow-up-right

  1. ใช้คำสั่ง terraform init เพื่อเริ่มใช้งาน terraform เป็นขั้นตอนแรกที่สำคัญในการเริ่มต้นใช้งาน Terraform เนื่องจากมันจะจัดเตรียมสภาพแวดล้อมให้พร้อมสำหรับการดำเนินการคำสั่ง Terraform อื่น ๆ เช่น terraform plan หรือ terraform apply

เมื่อ init สำเร็จจะปรากฎ ผลลัพธ์ดังรูป

folder .terraform และ file .terraform.lock.hcl ที่เกิดขึ้นจากการใช้คำสั่ง terraform initเมื่อทำการ init เรียบร้อย ก็จะสามารถเพิ่ม resource ต่างๆ เพื่อใช้จัดการ infrastructure ด้วย terraform ได้

  1. สร้างไฟล์ ที่ชื่อว่า compute_instance.tf

  1. ทำการเเก้ไขไฟล์ compute_instance.tf

Note : สามารถอ่านข้อมูลเพิ่มเติมได้ที่ openstack_compute_instance_v2arrow-up-right , openstack_networking_port_v2arrow-up-right

  1. ใช้คำสั่ง terraform plan เพื่อตรวจสอบ script เเละดูว่ามีการเปลี่ยนแปลงใดจะเกิดขึ้นเมื่อใช้คำสั่ง terraform apply

  1. ใช้คำสั่ง terraform apply เพื่อสร้าง instance

หลังจากใช้คำสั่ง terraform จะถามว่าต้องการ perform action หรือไม่ ถ้าต้องการให้พิมพ์ yes ถ้าไม่ต้องการให้พิมพ์ no หากสร้าง instance สำเร็จจะได้ผลลัพธ์ดังรูป

โดย instance ที่สร้างจะปรากฎในหน้า space.nipa.cloudarrow-up-right ที่หัวข้อ COMPUTE > Instances

การ attach floating ip เข้ากับ instance

  1. สร้างไฟล์ openstack_networking_floatingip.tf

  1. เเก้ไขไฟล์ openstack_networking_floatingip.tf

  1. สร้างไฟล์ openstack_networking_floatingip_associate.tf

  1. เเก้ไขไฟล์ openstack_networking_floatingip_associate.tf

  1. ใช้คำสั่ง terraform plan

  1. ใช้คำสั่ง terraform apply เพื่อสร้าง floating ip เเละผูกเข้ากับ instance

หลังจากใช้คำสั่ง terraform จะถามว่าต้องการ perform action หรือไม่ ถ้าต้องการให้พิมพ์ yes ถ้าไม่ต้องการให้พิมพ์ no

หลังจากใช้คำสั่งเเล้วจะปรากฎผลลัพธ์ ดังรูป

เมื่อตรวจสอบ Instance ในหน้า space.nipa.cloudarrow-up-right จะพบว่า Instance จะมี External Ip ที่ทำให้ instance สามารถเข้าถูกเข้าถึงได้จากภายนอก

วิธีการลบ Instance

terraform destroy คำสั่งสำหรับลบ infrastructure ที่ถูกสร้างขึ้นทั้งหมดที่ถูกสร้างขึ้นด้วยไฟล์ .tf ใน folder นั้นๆ

หลังจากใช้คำสั่ง terraform จะถามว่าต้องการ perform action หรือไม่ ถ้าต้องการ ให้พิมพ์ yes ถ้าไม่ต้องการ ให้พิมพ์ no

จะได้ผลลัพธ์ดังรูป

Last updated

Was this helpful?