Terraform 스크롤을 사용하여 EC2 업데이트

Alexander Savchuk은 AWS에서 Terraform을 사용하여 자동 배율 조정 그룹을 다운타임 없이 업데이트합니다.
알렉산더 사포크・ 2018년 8월 25일・ 7분 읽기 중등적
🚨경고🚨
극한 스크롤 기술이 앞서다.조작을 조심하다.
Terraform은 로컬에서 파란색/연한 파란색을 만들 수 있습니다. lifecycle block에 create_before_destroy = true
만 추가하면 Terraform은 파란색/녹색으로 자원을 만들 수 있습니다.
resource "azurerm_resource_group" "example" {
# ...
lifecycle {
create_before_destroy = true
}
}
그림 1 - 라이프 사이클 블록의 예입니다.
이 업데이트를 보여주기 위해서, 나는 Packer를 사용하여 매우 간단한 웹 페이지를 만들어서 그림을 만들기로 결정했다.
Packer를 사용하여 속도 향상
terraform을 사용하여 스크롤 업데이트를 만드는 방법을 깊이 연구하기 전에 Packer에 대해 이야기합시다.
HashiCorpPacker는 자동화된 기계 이미지를 구축하는 데 목적을 둔다. 이것은 우리가 스크립트를 만들어서 응용 프로그램 내부의 이미지를 설정하고 응용 프로그램을 설치하는 데 필요한 모든 의존 항목을 설정할 수 있다는 것을 의미한다.
우리의 예시에서 우리는 Packer를 사용하여 매우 간단한 HTTP 서버를 구축했다.간단한 스크립트를 만들었습니다. 아파치 웹 서버를 설치하고 특정한 배경색을 가진 웹 페이지를 만들 것입니다. (색을 선택할 수 있지 않습니까?)
resource "azurerm_resource_group" "example" {
# ...
lifecycle {
create_before_destroy = true
}
}
프로그램의 "버전"을 업데이트하려면 색 변수를 원하는 색으로 변경하십시오.우리 웹 페이지의 기본 색상은 빨간색입니다
variable "color" {
default = "red"
}
이 글에서 저는 Packer를 상세하게 소개하지 않겠지만 기본적으로 Packer는 EC2 실례를 만들어서 그 중에서 실행scripts/basic-website.sh
하고 이 실례의 스냅샷을 찍어서 rolling_update_{{timestamp}}
로 저장합니다.이 스크립트의 실행은 provisioner
블록에서 설명합니다
이것은 좋은 강좌가 아니라는 것을 알지만, 지금은 이미 충분한 포장이다
Rolling Update with Terraform
그래, 재미있는 건.Terraform은 이 점을 할 수 없습니다
Terraform은 응용 프로그램이 활성 상태인지 알 수 없고 현재 버전이 무엇인지 확인할 수 없습니다.왜냐하면 그것은 이 목적을 위해 만들어진 것이 아니기 때문이다
우리는 목표 그룹과 자동 축소 그룹에 건강 검사를 설정할 수 있지만, Terraform은 응용 프로그램이 응용 단계를 마친 후에 건강한지 신경 쓰지 않는다
다른 한편, Terraform을 사용하여 스크롤 업데이트를 만들기 위해 작은 기술을 사용합니다...CloudFormation
CloudFormation은 자동 축소 그룹에 매우 멋진 기능을 제공합니다. 즉, UpdatePolicy입니다.이것은 ASG가 업데이트될 때마다 발생하는 정책입니다. 이것은 우리가 새 버전의 시작 템플릿을 시작하면 ASG가 그 실례를 업데이트할 수 있음을 의미합니다
우리는 이런 클라우드 정보 자동화를 이용하여 지형에 융합시킬 수 있다
그래, 르카스, @endofcake 이미 우리에게 이 모든 것을 설명했어
말을 적게 하고 코드를 많이 주세요
우선, 이git 저장소 복제:
packer
폴더에 우리의 첫 번째 AMI
cd packer
packer build .
Wait until the AMI is created
이후 저장소의 루트로 돌아가 지형을 적용합니다
cd ..
terraform init
terraform apply
웹 페이지가 시작되고 실행 중인지 확인하려면 Terraform 출력terraform output lb_dns
에서 LoadBalancer DNS를 가져와 가장 좋아하는 브라우저에서 열거나 롤업curl $(terraform output lb_dns)
Update the Image
업데이트 진행 상황을 확인하기 위해 다른 터미널에서 이 순환을 실행하십시오:
while true; do
curl $(terraform output lb_dns)
sleep 1
done
이제 색상을 선택하여 응용 프로그램의 새 버전을 만듭니다.패커 CLI로 전달-var 'color=green'
의 기본 변수를 덮어쓸 수 있습니다
cd packer
packer build -var 'color=green' .
완성을 기다리고 지형을 다시 적용합니다:
cd ..
terraform apply
우리는 lauchconfiguration
및 cloudformation
자원이 변경되었는지 확인할 수 있습니다
적용 확인 및 롤러 순환을 확인하여 변경 사항을 실시간으로 확인합니다
Conclusion
저는 이 문장이 Terraform에서의 학습에 유용하길 바랍니다. 제 다음 문장에서 저는 이 과정을 진실한 응용 프로그램으로 보여주고 싶습니다. 예를 들어Consult
Clean up
terraform destroy --auto-approve
당신의 시간과
감사합니다.Reference
이 문제에 관하여(Terraform 스크롤을 사용하여 EC2 업데이트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/souzaxx/rolling-update-ec2-with-terraform-13bf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)