จะมีงานหนึ่งที่ผู้ดูแล Infrastructure จะต้องทำบ่อยๆ ก็คือการสร้าง Virtual Machines ตามที่เพื่อนร่วมงาน, แผนกอื่น, คู่ค้า, ลูกค้า ฯลฯ ต้องการ
สวัสดีครับ วันนี้เราสามารถเร่งเวลาของงานที่ทำบ่อยๆ ได้ด้วย Terraform
โดยเริ่มจาก Ubuntu 22.04 เครื่องปล่าจนถึงได้ 10 AWS EC2
ติดตั้ง Terraform
Prerequisites
sudo apt-get update && sudo apt-get install -y gnupg software-properties-common
Download the Singing Key
wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
Verify the Singing Key
798A EC65 4E5C 1542 8C8E 42EE AA16 FCBC A621 E701
gpg --no-default-keyring --keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg --fingerprint
เพิ่ม Repositories
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
Update
sudo apt update
Install
sudo apt install terraform
ตรวจเช็คว่า Terraform พร้อมใช้งานแล้ว
terraform -help
สร้าง EC2
สร้าง Directory
mkdir iac-aws
cd iac-aws
สร้างไฟล์ main.tf
ใส่ aws access_key และ aws secret_key ของเราครับ
provider "aws" {
access_key = ""
secret_key = ""
region = "ap-southeast-1"
}
resource "aws_instance" "iac-aws" {
ami = "ami-0af2f764c580cc1f9"
instance_type = "t2.micro"
tags = {
Name = "aws-vm"
}
}
เตรียม Plan การสร้าง
terraform plan
สร้างเครื่องจริง
พิมพ์ yes เพื่อยืนยัน
terraform apply
ถ้าต้องการ 10 เครื่อง ให้เพิ่ม count
resource "aws_instance" "iac-aws" {
count = 10
...
ให้แต่ละเครื่องมีเลขกำกับ
...
tags = {
Name = "aws-vm-${count.index}"
}
...
เตรียม plan และ apply อีกครั้ง
terraform plan
terraform apply
เมื่อใช้งานเสร็จ สามารถสั่งลบได้ทีละ 10 เครื่องเช่นกันครับ โดยไม่กังวลว่าจะลบผิด
terraform destroy
หากต้องการ VM เพิ่ม ขอแยกเป็น 2 เคสครับ
- เพิ่มจาก 10 เป็น 11 VMs ให้แก้ไข count=11 จากนั้นรันคำสั่ง terraform plan; terraform apply จะได้ VM เพิ่ม 1 เครื่องโดยไม่กระทบ 10 VMs ที่มีอยู่
- หากต้องการสร้าง VM ชุดใหม่ โดยแยกจากชุดแรก ให้สร้าง Directory และ main.tf ใหม่
ในตอนหน้า พบกับ Cloud Providers เจ้าอื่นๆ และจะต่อยอดไปที่การทำ Multi-Cloud ครับ
Reference: https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli
Top comments (0)