มาใช้ Terraform สร้าง EC2 เพื่อชีวิตที่ง่ายๆกัน

เกริ่นก่อนจะมาเขียนบทความนี้เจอปัญหาการสร้าง Server EC2 เพราะต้องมีการไป Set Group ,Set Network ,และอีกหลายอย่างกว่าจะได้ EC2 มาเครื่องหนึ่งและต้องมาคอขวดเพราะคนอื่นก็สร้างไม่ได้ แต่จะง่ายกว่าไหมถ้ามี Script พร้อม Key ไว้สร้างเพียงไม่กี่ Click เพื่อให้ทีมได้เครื่อง EC2 มาง่ายๆเลย

Terraform คือเครื่องมือที่จัดการ Infrastructure และ Syntax ง่ายต่อความเข้าใจ และสามารถจัดการได้หลายเจ้าโดยที่แต่ละคนที่เข้ามาใหม่ไม่ต้องมีความรู้เรื่อง Cloud นั้นๆเลยก็ได้แต่บทความนี้จะเอามาจัดการกับ AWS Cloud

สิ่งที่ต้องเตรียม
-ติดตั้ง AWS ในเครื่องให้เรียบร้อย
-VS Code

ขั้นตอนการติดตั้งสำหรับ Macbook นะครับ
-brew tap hashicorp/tap
-brew install hashicorp/tap/terraform
-terraform — version

หน้าตาหลังติดตั้งสำเร็จ

Terraform จะประกอบด้วย 3 ส่วนสำคัญ
-terraform init คล้ายๆเป็นการ init project การเขียน code ทั่วไปทำครั้งเดียวต่อ 1 script
-terraform plan เป็นการตรวจสอบ script และเช็คการสร้างว่าอะไรสำเร็จไม่สำเร็จ
-terraform apply เป็นการสร้างจริงเสียเงินจริงแล้วก็เปรียบเสมือนการ Deploy Code ประมาณนั้น

อันนี้คือ file.tf ที่เราจะเอามาสร้างในรอบนี้เป็นการสร้าง EC2 จนไปถึงการ Run Script ต่างๆการเตรียมพร้อมเครื่อง EC2 เราทั้งหมดมาอธิบายเป็นส่วนๆกัน

เป็นการเลือกว่าเราจะใช้ Cloud เจ้าไหน region อะไร
ต่อมาก็เป็นการกำหนด Inboud & Outboud รวมถึงการตั้งชื่อ
เป็นการ Config เครื่อง EC2 ของเราว่าจะใช้อะไรบ้าง

ami คือ id image ของเครื่อง Server ที่เราจะใช้แล้วจะหาจากไหนใช่ไหมครับ

จาก Script ผมจะหา id ของ ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-20230517
ผมก็จะได้ id มาใส่ไว้ใน .tf ของเราแล้ว

instance_type คือ สเปคที่เราจะใช้ของ EC2 ผมเลือกเป็น t3.micro เอาไว้ Demo เฉยๆ

key_name คือ key .pem ของเราที่เราเอาไว้ใช้ ssh เข้าไปใน Server เรานั้นเองซึ่งสามารถสร้างที่ console aws หรือบน Local เราได้ข้างล่างเป็นการสร้างใน Local

โดยผมจะเปลี่ยนจาก YourKeyName -> next10-dev ถ้ามีอยู่แล้วข้ามขั้นนี้ไปก็ได้

vpc_security_group_ids คือ id ที่ได้จากการสร้าง aws_security_group อันนี้ไม่ต้องทำอะไรหรือไม่อยากให้มีหลาย Group ก็ไปเอาไอดีบน AWS มาใส่ก็ได้

associate_public_ip_address คือ จะให้ EC2 เรามีไอพีสำหรับออก Internet ไหม

tags.name คือ ผมจะให้ Instance นี้ชื่ออะไร

ส่วนตรงนี้ไปจนจบคือหลังจากเราสร้าง EC2 แล้วเราจะให้ Terraform ทำอะไรต่อ

ซึ่งสิ่งที่ต้องทำคือการ Trigger กับ Connection เข้า EC2 เท่านั้นนอกเหนือจากนั้นคือการเตรียมสิ่งที่ต้องใช้บน Server ของเราซึ่งของแต่ละคนจะแตกต่างกันไป

ซึ่งของผมจะเป็นการ ติดตั้ง Docker,Docker-compose,Setup Log Cloudwatch,Custom Nginx,จัดการ SSL/TLS certificates สำหรับ reverse proxy

อธิบายหมดแล้วมาลองดูผลลัพธ์กันครับ

terraform init
จะได้หน้าตาออกมาประมาณนี้
terraform plan

ตรวจว่า Script นี้ Run ผ่านไหมได้อะไรบ้างซึ่งมาจะแสดงมาเยอะมาก

terraform apply

จะถามว่าเรายอมรับไหมกับสิ่งที่มันจะสร้างให้ทั้งหมดพิมพ์ yes ไปแล้วรอเป็นอันจบแล้ว

เป็นอันจบ
เช็คบน EC2 ก็มาแล้วตรวจดูก็ได้ตามที่ต้องการ ssh เข้าไปดูได้เลยว่าได้แบบที่ต้องการหมดที่เราต้องการไหม
terraform destroy

จากนั้นจะทำการลบที่สร้างไปทั้งหมดด้วยคำสั่ง terraform destroy มันก็จะถามว่าจะลบจริงหรอเราก็ตอบ yes ไปเป็นอันจบ

จะเห็นว่าหลังจากเรา Config หมดทุกอย่างแล้วเราใช้เวลาสร้าง EC2 ตัวนึงไม่ถึง นาทีเลยจากปกติ 30 นาทีต้องมีทั้งสร้าง EC2 ทั้ง Config Server 100 EC2 ก็ Loop เอา ง่ายๆเลยใช่ไหมครับส่งท้ายปี 2023 ด้วยบทความนี้กัน ขอให้มีความสุขกับปีใหม่ครับ

--

--

No responses yet