Makefile นั้นเป็นไฟล์ที่ช่วยให้เรารวม Commands ที่ใช้บ่อยไว้ในที่เดียว เพื่อให้การทำงาน DevOps นั้นสะดวก และรวดเร็วขึ้น บทความนี้จะบอกการใช้ Makefile สำหรับ DevOps และรวม Commands ที่ใช้บ่อยไว้ในไฟล์ Makefile ทั้งหมด
Makefile คืออะไร?
Makefile นั้นเป็นไฟล์ที่ใช้ในการกำหนด Tasks หรือ Commands ต่างๆ เพื่อให้ง่ายต่อการใช้งาน และสามารถใช้ได้บ่อยๆ ไฟล์ Makefile นั้นจะอยู่ในรูปของ Key-Value Pairs โดย Key จะเป็นชื่อของ Task และ Value จะเป็น Command ที่ต้องการใช้
เหตุผลที่เราต้องใช้ Makefile ในการพัฒนา DevOps นั้นเพราะว่า Makefile นั้นช่วยให้เราลดความซ้ำซ้อนของ Commands และยังช่วยให้การทำงาน DevOps นั้นสะดวก และรวดเร็วขึ้น
ตัวอย่างการสร้าง Makefile สำหรับ DevOps
ต่อไปนี้จะเป็นตัวอย่างการสร้าง Makefile สำหรับ DevOps และรวม Commands ที่ใช้บ่อยไว้ในไฟล์ Makefile ทั้งหมด
Makefile
.PHONY: help
help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
.PHONY: build
build: ## Build Docker Image
docker build -t myapp:latest .
.PHONY: up
up: ## Run Docker Container
docker run -d --name myapp -p 8080:8080 myapp:latest
.PHONY: down
down: ## Stop Docker Container
docker stop myapp && docker rm myapp
.PHONY: logs
logs: ## Show Docker Container Logs
docker logs -f myapp
.PHONY: restart
restart: ## Restart Docker Container
docker restart myapp
.PHONY: deploy
deploy: ## Deploy to Production
kubectl apply -f k8s/deployment.yaml
.PHONY: rollback
rollback: ## Rollback to Previous Version
kubectl rollout undo deployment/myapp
.PHONY: test
test: ## Run Tests
python -m pytest tests/
.PHONY: lint
lint: ## Run Linting
pylint myapp/
.PHONY: fmt
fmt: ## Format Code
black myapp/
.PHONY: security
security: ## Check Security
bandit -r myapp/
.PHONY: deps
deps: ## Update Dependencies
pip install --upgrade -r requirements.txt
.PHONY: clean
clean: ## Clean Up
find . -type f -name '*.pyc' -delete
find . -type d -name '__pycache__' -delete
.PHONY: init
init: ## Initialize Project
pip install -r requirements.txt
.PHONY: backup
backup: ## Backup Database
dump_db.sh
.PHONY: restore
restore: ## Restore Database
restore_db.sh
.PHONY: migrate
migrate: ## Run Database Migrations
alembic upgrade head
.PHONY: seed
seed: ## Seed Database
python scripts/seed_db.py
จากตัวอย่างข้างต้น สามารถใช้ Makefile ได้โดยการ Run Command
$ make build
$ make up
$ make down
$ make logs
$ make restart
$ make deploy
$ make test
$ make lint
ขั้นตอนการใช้ Makefile
ต่อไปนี้จะเป็นขั้นตอนการใช้ Makefile สำหรับ DevOps
- สร้างไฟล์ Makefile ในไดเรกทอรี่ root ของ Project
- เพิ่ม Tasks และ Commands ในไฟล์ Makefile
- รันคำสั่ง make ตามด้วยชื่อ Task ที่ต้องการ
- ตรวจสอบผลลัพธ์
ประโยชน์ของการใช้ Makefile
ประโยชน์ของการใช้ Makefile ในการพัฒนา DevOps มีดังต่อไปนี้
- ลดความซ้ำซ้อนของ Commands
- ง่ายต่อการใช้งาน
- สะดวก และรวดเร็วขึ้น
- สามารถใช้ได้ทั่วไป
- ลดข้อผิดพลาดจากการพิมพ์คำสั่ง
- ง่ายต่อการแชร์กับทีม
สรุป
Makefile นั้นเป็นเครื่องมือที่มีประโยชน์สำหรับการพัฒนา DevOps เพราะว่ามันช่วยให้การทำงาน DevOps นั้นสะดวก และรวดเร็วขึ้น และลดความซ้ำซ้อนของ Commands ดังนั้นหากใครกำลังพัฒนา DevOps อยู่ ก็อย่าลืมใช้ Makefile เพื่อให้การทำงานนั้นสะดวก และรวดเร็วขึ้น
