- [AWS]테라폼(Terraform) 설치 및 캐시 설정(feat. packer, ansible) 목차
| 테라폼 설치하기
https://learn.hashicorp.com/tutorials/terraform/install-cli?in=terraform/aws-get-started
1.brew tap 명령어 복사 후 실행
2.brew install 실행
테라폼 자동완성 설치
zshrc 파일 확인
cat ~/ .zshrc
그럼 zsh 재시작을 위해 zsh 입력 후 terraform을 입력 후 tab을 눌러보면 밑에 명령어들이 자동으로 확인되는 것을 볼 수 있다.
테라폼 캐시(cache) 설정
https://www.terraform.io/cli/config/config-file
테라폼 설정 중
위와 같은 설정 옵션이 존재하는데 해당 옵션을 설정해주기 위하여 파일 안에 해당 내용을 입력해주자.
그 후 이제 plugin-cache folder를 생성하자.
여기까지 설정한다면, 테라폼을 사용하여 여러 워크스페이스를 관리하게 될 텐데 각 워크스페이스에서 필요하는 모듈이나 프로바이더를 다운로드를 하게 된다.
기본적으로 이 설정을 하지 않으면 해당 워크스페이스상에. terraform 디렉터리 안에다가 해당 캐시들을 설치하게 되는데
워크스페이스의 수가 증가할수록 해당 플러그인 캐시들의 용량이 기하급수적으로 증가하게 되는데 어느 순간 laptop에 저장소가 부족하게 된다.
따라서 이 플러그인 옵션 설정으로 테라폼의 캐시 저장 공간을 중앙집중식으로 효율적으로 관리할 수 있다.
동일한 캐시들은 한 번만 설치하도록 해주자!
+ 패커(Pakcer) 설치
패커는 이미지 빌드를 도와주는 도구인데, 앞서 설명한 글에서 보았듯이 이미지 빌드는 EC2 또는 머신들이 디스크 이미지를 읽어 들이는 형태를 의미합니다.
그중 대표적인 이미지 빌더로 Packer를 사용합니다.
그 이유는 여러 플랫폼을 지원하기 때문이죠 (EC2, VMware, Docker 등)
설치해봅시다.
https://www.packer.io/downloads
자동완성 기능 설치
packer -autocomplete-install
다음과 같이 정상적으로 설치되어 있는 것을 확인할 수 있습니다. (autoload ~~~, complete blabla~~)
그 후 zsh 명령어를 입력하여 다시 zsh를 실행해줍니다.
tab key를 눌러보면 auto complete 기능이 정상적으로 실행됩니다.
+ 추가로 앤서블을 설치해주겠습니다.
앤서블이란?
여러 개의 서버를 효율적으로 관리할 수 있게 해주는 환경 구성 자동화 도구입니다.(레드헷이 인수 했습니다.)
필요할 때 마다 자동으로 실행 시킬 수 있는 것이 가장 큰 특징이죠.
기존 리눅스에서 동일한 환경을 구성하기 위해 Bash 쉘 스크립트에 패키지의 설치, 설정 파일 수정등을 나열하여 이를 실행하는 것이 일반적이었습니다.
이런 게 한계점으로 부각되자, 이를 위해 고안된 Infrastrucutre as a code 입니다.
환경의 배포와 구성을 규격화된 코드로 정의해 사용하는 것을 의미합니다.
Infrastructure as a code가 가능한 자동화 도구를 이용하여 인프라의 상태를 코드로 작성하고 이를 모든 서버에 배포함으로써 특정 환경을 동일하게 유지할 수 있도록 돕게 되었습니다.
이런 자동화도구 중 대표적인 툴이 바로 앤서블(ansible)이죠.
앤서블의 3가지 요소
크게 3가지인 인벤토리, 플레이북, 모듈로 이루어져있습니다.
인벤토리는 어디서 수행할지?
플레이북은 무엇을 수행할지?
모듈은 어떻게 수행할지? 를 정의합니다.
인벤토리(inventory)
인벤토리는 앤서블에 의해 제어될 대상을 정의합니다. 일반적으로 hosts.ini 파일에 정의해 사용 하며, 여러 서버들의 SSH접근 iP, 포트, 리눅스 사용자 와 같은 접속 정보를 아래와 같이 정의합니다.
플레이북(Playbook)
플레이북은 인벤토리 파일에서 정의한 대상들이 무엇을 수행할 것인지 정의하는 역할을하며, yaml 포맷으로 설정합니다.
앤서블을 사용하려면 이 playbook을 잘 다룰줄알아야하며, 단독으로 사용되는 것이 아닌 인벤터리와 플레이북의 조합으로 같이 사용합니다.
플레이북 yaml 파일의 예시는 아래와 같습니다.
모듈(Module)
모듈은 플레이북에서 task가 어떻게 수행될지를 정의하는 요소입니다.
타겟 호스트로 실제 작업을 처리하는 단위로 이 Module이라는 개념을 사용합니다.
앤서블은 Python Code를 호출하여 실행하기 때문에 Python이 필수적으로 필요하며, 실제로 앤서블을 설치해보면 다양한 모듈이 같이 설치되는 것을 볼 수가 있습니다.
yum sysctl systemd copy git docker_container ... 등. 예를 들어 yum 명령어를 통해 패키지를 설치할때 yum 모듈을 사용하면 되며 위 플레이북 예시에서 yum 부분이 yum 모듈을 정의하고 이를 사용하겠다는 의미 입니다.
앤서블의 멱등성
앤서블은 멱등성(Idempotency)이란 특징을 가집니다. 이게 무슨말이냐면 여러 번 적용해도 결과가 동일하며, 수정된 부분이 있다면 그 부분만 새롭게 반영 된다는 것입니다.
Ansible 앤서블 설치
'AWS' 카테고리의 다른 글
[AWS]CLI 보안자격 증명 설정하는 방법 CLI 사용법 (0) | 2022.02.24 |
---|---|
[Terraform]테라폼(terraform) workspace란? (Feat.프로바이더 사용용해보기) (0) | 2022.02.23 |
[AWS]IaC(Infrastructure as Code)란? (0) | 2022.02.22 |
[AWS]모놀리식 vs MSA(마이크로 서비스 아키텍쳐)차이점 (0) | 2022.02.18 |
[AWS]AWS(아마존)비용 이슈 대처방법과 프리티어 계정 만료시 대처법 (0) | 2022.02.18 |