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는 확실히 당신의 친구입니다!

좋은 웹페이지 즐겨찾기