Terraform with Openstack
ใน Tutorials นี้จะเป็นการใช้ Terraform ในการสร้าง instance สำหรับผู้ที่ไม่เคยใช้ Terraform ในการทำ โดยจะเริ่ม Guide ตั้งเเต่สิ่งที่ต้องเตรียมก่อนสร้าง(Prerequisites) การหา data เเละ Resource ที่จำเป็น
Prerequisites
มี instance หรือ Devices ที่ติดตั้ง Terraform (How to install)
การกำหนด Provider (OpenStack Provider)
Data ที่ต้องใช้ใน Terraform (สามารถหาได้จาก space.nipa.cloud)
Provider
username
andpassword
: นำมาจากที่ผู้ใช้กรอกเข้าเว็ป portaltenant_id
ortenant_name
: เอาไว้ระบุ project ที่เราจะใช้งาน Terraform สามารถหาได้จาก project_id หรือ project_nameTerraform version : รองรับversion >= 1.8.4
Openstack version : รองรับversion ~> 2.0.0
auth_url
: ต้องใช้ url นี้ https://identity-api.nipa.cloud ในการ Authenticationregion
: เลือกพื้นที่ หรือ เขตในการสร้าง instance
Instance
image_id
หรือimage_name
: ใช้สำหรับกำหนด OS ให้กับ instanceflavor_id
หรือflavor_name
: ใช้สำหรับกำหนด Machine Type ให้กับ instanceavailability_zone
: ระบุพื้นที่ที่กำลังใช้งานNCP-BKK
NCP-BKK2
NCP-NON
NCP-KKN
key_pair
: จำเป็นต้องสร้าง key pair ก่อนจึงจะนำไปใช้งานได้ซึ่งเมื่อสร้างเสร็จเเล้วจะได้ไฟล์ .pem สามารถใช้ remote เข้า instance ด้วยคำสั่ง
ssh -i [target = pathfile] username@hostname
security_groups
: สามารถระบุชื่อ security group เพื่อนำมาใช้ได้
Network
network_id
: เป็น id networkเเต่ละตัว ซึ่งสามารถนำไปใช้ในการสร้าง port เเละ subnetpool
: เป็น External network ที่เป็น public ของเเต่ละ AZ ที่เราสามารถนำมาใช้สร้าง floating ip ใน Terraformport_id
: id port ของ instance ตัวนั้นๆ
วิธีการสร้าง instance
สร้างไฟล์ openstack_provider.tf
เเก้ไขไฟล์ openstack_provider.tf ดังนี้
Note : สามารถอ่านข้อมูลเพิ่มเติมได้ที่ openstack provider
ใช้คำสั่ง
terraform init
เพื่อเริ่มใช้งาน terraform เป็นขั้นตอนแรกที่สำคัญในการเริ่มต้นใช้งาน Terraform เนื่องจากมันจะจัดเตรียมสภาพแวดล้อมให้พร้อมสำหรับการดำเนินการคำสั่ง Terraform อื่น ๆ เช่นterraform plan
หรือterraform apply
เมื่อ init สำเร็จจะปรากฎ ผลลัพธ์ดังรูป
folder .terraform
และ file .terraform.lock.hcl
ที่เกิดขึ้นจากการใช้คำสั่ง terraform init
เมื่อทำการ init เรียบร้อย ก็จะสามารถเพิ่ม resource ต่างๆ เพื่อใช้จัดการ infrastructure ด้วย terraform ได้
สร้างไฟล์ ที่ชื่อว่า compute_instance.tf
ทำการเเก้ไขไฟล์ compute_instance.tf
Note : สามารถอ่านข้อมูลเพิ่มเติมได้ที่ openstack_compute_instance_v2 , openstack_networking_port_v2
ใช้คำสั่ง
terraform plan
เพื่อตรวจสอบ script เเละดูว่ามีการเปลี่ยนแปลงใดจะเกิดขึ้นเมื่อใช้คำสั่งterraform apply
ใช้คำสั่ง
terraform apply
เพื่อสร้าง instance
หลังจากใช้คำสั่ง terraform จะถามว่าต้องการ perform action หรือไม่ ถ้าต้องการให้พิมพ์ yes ถ้าไม่ต้องการให้พิมพ์ no หากสร้าง instance สำเร็จจะได้ผลลัพธ์ดังรูป
โดย instance ที่สร้างจะปรากฎในหน้า space.nipa.cloud ที่หัวข้อ COMPUTE > Instances
การ attach floating ip เข้ากับ instance
สร้างไฟล์ openstack_networking_floatingip.tf
เเก้ไขไฟล์ openstack_networking_floatingip.tf
สร้างไฟล์ openstack_networking_floatingip_associate.tf
เเก้ไขไฟล์ openstack_networking_floatingip_associate.tf
ใช้คำสั่ง
terraform plan
ใช้คำสั่ง
terraform apply
เพื่อสร้าง floating ip เเละผูกเข้ากับ instance
หลังจากใช้คำสั่ง terraform จะถามว่าต้องการ perform action หรือไม่ ถ้าต้องการให้พิมพ์ yes ถ้าไม่ต้องการให้พิมพ์ no
หลังจากใช้คำสั่งเเล้วจะปรากฎผลลัพธ์ ดังรูป
เมื่อตรวจสอบ Instance ในหน้า space.nipa.cloud จะพบว่า Instance จะมี External Ip ที่ทำให้ instance สามารถเข้าถูกเข้าถึงได้จากภายนอก
วิธีการลบ Instance
terraform destroy
คำสั่งสำหรับลบ infrastructure ที่ถูกสร้างขึ้นทั้งหมดที่ถูกสร้างขึ้นด้วยไฟล์ .tf ใน folder นั้นๆ
หลังจากใช้คำสั่ง terraform จะถามว่าต้องการ perform action หรือไม่ ถ้าต้องการ ให้พิมพ์ yes ถ้าไม่ต้องการ ให้พิมพ์ no
จะได้ผลลัพธ์ดังรูป
Last updated