Terraform을 공부하기 위해 CI/CD 환경을 정돈했습니다.
프로젝트에서 사용하는 것도 상정해, 절각이므로 CI/CD도 정돈한 메모입니다.
이번에는 Github에서 Pull-Request를 발행했을 때 밸리데이션 체크를하고 master 브랜치에 병합했을 때
AWS에 배포하려고 합니다.
환경 구축에 사용한 것
Github
브랜치 전략은 Github Flow를 사용하여 master 브랜치를 보호해 둡니다.
(Settings -> Branches)
S3
Terraform의 상태를 관리하는 terraform.tfstate
를 영속화할 필요가 있다.
배포에는 CircleCI를 사용하므로 S3에 저장하는 것이 좋습니다.
다행히 Terraform에는 terraform.tfstate
를 S3로 관리하는 설정이 있으므로 그것을 사용합니다.
main.tfterraform {
backend "s3" {
bucket = "studyed-terraform-state1" # 作ったバケット名
region = "ap-northeast-1"
key = "terraform.tfstate"
encrypt = true
}
}
tflint
tflint 은 구문 검사를 위한 도구입니다.
0.12에도 대응하고 있습니다.
기본적으로 로컬 환경에서 사용하고 싶지만 CI에서도 확인합니다.
이번에는 tflint의 Docker 이미지을 사용했습니다.
Circle CI
환경 변수
AWS에 연결하려면 다음 환경 변수로 설정합니다.
Terraform의 상태를 관리하는
terraform.tfstate
를 영속화할 필요가 있다.배포에는 CircleCI를 사용하므로 S3에 저장하는 것이 좋습니다.
다행히 Terraform에는
terraform.tfstate
를 S3로 관리하는 설정이 있으므로 그것을 사용합니다.main.tf
terraform {
backend "s3" {
bucket = "studyed-terraform-state1" # 作ったバケット名
region = "ap-northeast-1"
key = "terraform.tfstate"
encrypt = true
}
}
tflint
tflint 은 구문 검사를 위한 도구입니다.
0.12에도 대응하고 있습니다.
기본적으로 로컬 환경에서 사용하고 싶지만 CI에서도 확인합니다.
이번에는 tflint의 Docker 이미지을 사용했습니다.
Circle CI
환경 변수
AWS에 연결하려면 다음 환경 변수로 설정합니다.
config.yml
tflint로 유효성 검사를 하고 master 브랜치에 병합할 때
terraform apply
명령으로 배포하도록 합니다.version: 2.1
executors:
validater:
docker:
- image: wata727/tflint
deployer:
docker:
- image: hashicorp/terraform:light
jobs:
validate:
executor:
name: validater
steps:
- checkout
- run:
name: Validation check by tflint
command : tflint
deploy:
executor:
name: deployer
steps:
- checkout
- run:
name: Inittialize
command: terraform init
- run:
name: Deploy
command: terraform apply -auto-approve # デプロイ確認不要になる
workflows:
test:
jobs:
- validate
- deploy:
requires:
- validate
filters:
branches:
only: master
무슨 일이야?
유효성 검사
예를 들어 modlue
를 modue
Pull Request를 만들면 Circle CI에 화가났습니다.
배포
병합 후 워크플로에서 배포할 수 있습니다.
끝에
이번에는 Terraform의 CI/CD 환경을 정리해 보았습니다.
좀 더 포장할 곳도 있을 것 같습니다만
최소한 공부용으로 좋을까.
참고
Terraform에서 tfstate 파일을 S3로 관리
Reference
이 문제에 관하여(Terraform을 공부하기 위해 CI/CD 환경을 정돈했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/okky_eng/items/dc804373a989437274f1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이번에는 Terraform의 CI/CD 환경을 정리해 보았습니다.
좀 더 포장할 곳도 있을 것 같습니다만
최소한 공부용으로 좋을까.
참고
Terraform에서 tfstate 파일을 S3로 관리
Reference
이 문제에 관하여(Terraform을 공부하기 위해 CI/CD 환경을 정돈했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/okky_eng/items/dc804373a989437274f1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Terraform을 공부하기 위해 CI/CD 환경을 정돈했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/okky_eng/items/dc804373a989437274f1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)