docker로 Cross team terraform 및 azure-cli 버전 관리
개발자로서 우리는 새로운 것, 새로운 버전 등을 가지고 놀면서 최첨단을 달리고 싶어합니다. 그러나 이는 우리 기계를 넘어선 영향을 미칠 수 있으며 팀 간 작업과 팀 내에서도 이상한 문제를 일으킬 수 있습니다.
저는 이를 격리하고 새로운 팀원들이 빠르게 적응하도록 하여 워크플로를 간소화하는 접근 방식을 연구해 왔습니다. 본질적으로 이것은 거의 모든 것에 도커를 사용하는 것으로 요약됩니다. 이 게시물에서는 Terraform 및 Azure-CLI에 대해 이 작업을 수행하는 방법을 안내합니다.
주의 사항: 일반적으로 이 조합으로 이미 구축된 이미지가 야생에 있다는 것을 인정합니다. 그러나 이 접근 방식을 사용하면 리포지토리 수준에서 이미지를 사용자 지정할 수 있습니다. 이를 통해 기본 팀은 다른 팀의 개발자가 마찰 없이 팀에서 변화를 실행할 수 있는 격리된 환경을 제공할 수 있습니다.
도커파일
FROM mcr.microsoft.com/azure-cli
ENV TERRAFORM_VERSION 0.12.28
RUN apk add --update wget ca-certificates unzip git bash && \
wget -q -O /terraform.zip "https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip" && \
unzip /terraform.zip -d /bin && \
apk del --purge wget ca-certificates unzip && \
rm -rf /var/cache/apk/* /terraform.zip
VOLUME ["/data"]
WORKDIR /data
RUN printf "\\nalias tf='terraform'" >> /root/.bashrc
ENTRYPOINT ["/bin/bash"]
무엇을 하는지 살펴보겠습니다.
FROM mcr.microsoft.com/azure-cli
즉, 최신 버전의 Azure CLI를 가져오거나 이미 가져온 버전을 사용합니다. 좀 더 구체적으로 말하고 싶다면 끝에 ":"태그를 추가할 수 있습니다.
ENV TERRAFORM_VERSION 0.12.28
RUN apk add --update wget ca-certificates unzip git bash && \
wget -q -O /terraform.zip "https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip" && \
unzip /terraform.zip -d /bin && \
apk del --purge wget ca-certificates unzip && \
rm -rf /var/cache/apk/* /terraform.zip
이렇게 하면 terraform의 특정 버전이 설치되고 나중에 자동으로 정리됩니다.
VOLUME ["/data"]
WORKDIR /data
RUN printf "\\nalias tf='terraform'" >> /root/.bashrc
ENTRYPOINT ["/bin/bash"]
마지막으로, 우리는 tf를 바로 잡을 수 있을 때 "terraform"을 입력하는 것이 너무 많은 키 입력이므로 terraform 코드가 마운트될 볼륨 태그를 추가하고 별칭을 추가합니다.
그런 다음 이미지를 빌드할 수 있습니다.
docker build . local/tf:12-28
추가 ":12-28"은 버전을 유지하고 있음을 의미합니다.
달리기
그런 다음 이미지를 실행
docker run -it --rm -v ${PWD}:/data -v azure-cli:/root/.azure --name tf-inf local/tf:12-28
여기의 비밀 소스는 이름과 볼륨입니다. ${PWD}를 추가하면 현재 디렉토리를 컨테이너의 소스로 마운트한다는 의미입니다.
azure-cli 볼륨은 유효성 검사를 지속할 수 있도록 하므로 컨테이너를 종료할 때 손실되지 않으며 다른 컨테이너와 공유할 수도 있습니다.
참고:
--rm
플래그는 나중에 컨테이너를 제거합니다. 이것은 때때로 다시 시작한 후 마운트의 내용을 삭제하는 WSL2/Docker의 버그로 인해 매우 유용합니다.결론
팀 간 작업을 관리하는 것은 어렵습니다. 인프라 컨설턴트 또는 여러 자율 팀에서 일하고 있는 사람이라면 docker는 확실히 당신의 친구입니다!
Reference
이 문제에 관하여(docker로 Cross team terraform 및 azure-cli 버전 관리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/martinjt/manage-cross-team-terraform-and-azure-cli-versions-with-docker-c1f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)