[Terraform docs : AWS] 02. AWS get started

jb·2023년 1월 15일
0
post-thumbnail
post-custom-banner

서론

아래에 글은 공식문서를 공부하며 정리한 내용입니다.

참고


terraform 설치

테라폼을 사용하려면 설치해야 함. 해시코프는 테라폼을 바이너리 패키지로 제공함.

설치 방법

  • manual installation
  • homebrew on OS X
  • windows
  • linux

homebrew on OS X

# 설치
brew tap hashicorp/tap
brew install hashicorp/tap/terraform

# 설치 확인
terraform -help

# (옵션)업그레이드
brew update
brew upgrade hashicorp/tap/terraform

Linux

ubuntu/debian

# apt 업데이트 및 필요한 패키지 설치
$ sudo apt-get update -y && \
  sudo apt-get install -y gnupg software-properties-common

# 해시코프 gpg key 설치 및 key 검증
$ wget -O- https://apt.releases.hashicorp.com/gpg | \
    gpg --dearmor | \
    sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg

$ gpg --no-default-keyring \
    --keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg \
    --fingerprint

/usr/share/keyrings/hashicorp-archive-keyring.gpg
-------------------------------------------------
pub   rsa4096 2020-05-07 [SC]
      E8A0 32E0 94D8 EB4E A189  D270 DA41 8C88 A321 9F7B
uid           [ unknown] HashiCorp Security (HashiCorp Package Signing) <security+packaging@hashicorp.com>
sub   rsa4096 2020-05-07 [E]

# 테라폼 설치
$ sudo apt update -y && \
  sudo apt-get install terraform

centos/rhel or amazon linux

# 패키지 관리를 위한 yum-config-manager 설치
sudo yum install -y yum-utils

# OS 확인
cat /etc/*-release | grep -i name

# OS에 따라 MY_OS 변수를 아래 두 가지 중에 하나를 선택
MY_OS="RHEL" # or "AmazonLinux"

# yum-config-manager로 공식 해시코프 리눅스 repo를 추가
sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/$MY_OS/hashicorp.repo

# 추가한 repo로 테라폼 설치
sudo yum -y install terraform

설치 확인

$ terraform -help
  terraform -help plan
  • 오류가 난다면 테라폼이 설치된 PATH 환경 변수가 잘 설정됐는지 확인하자.

tab completion 활성화

테라폼 커맨드 자동완성 설정을 하자.

bash or zsh

# bash or zsh의 config 파일이 있는지 확인
cat ls ~/.bashrc # or `cat ls ~/.zshrc`

# 자동완성 패키지 설치
terraform -install-autocomplete
  • 설치가 완료되면 쉘을 재시작해야 함.

quick start tutorial

이제, 테라폼이 설치 됐으므로 잘 작동하는지 확인하기 위해 테라폼을 활용하여 nginx 서버를 docker로 띄워보자.

# 워킹디렉토리 생성 및 이동
$ mkdir learn-terraform-docker-container
  cd learn-terraform-docker-container

# main.tf 설정 파일 작성
$ cat <<EOF > main.tf
terraform {
  required_providers {
    docker = {
      source  = "kreuzwerker/docker"
      version = "~> 2.13.0"
    }
  }
}

provider "docker" {}

resource "docker_image" "nginx" {
  name         = "nginx:latest"
  keep_locally = false
}

resource "docker_container" "nginx" {
  image = docker_image.nginx.latest
  name  = "tutorial"
  ports {
    internal = 80
    external = 8000
  }
}
EOF

# 배포
$ terraform init
$ terraform apply

# 배포 확인
$ docker ps -f name=tutorial
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                  NAMES
ffe72beb9794   a99a39d070bf   "/docker-entrypoint.…"   30 seconds ago   Up 29 seconds   0.0.0.0:8000->80/tcp   tutorial

# 삭제
$ terraform destroy

# 삭제 확인
$ docker ps -f name=tutorial
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
  • 워킹디렉토리의 역할
    • 워킹디렉토리에 conf 파일을 작성해두고 이 파일에 명세된 인프라를 terraform 명령어로 생성, 관리, 삭제할 수 있음. conf 파일로 init, apply 하면 됨.
    • 또한 이 폴더는 필요한 plugin, module들과 실제 생성한 인프라에 대한 정보들을 저장하는데 쓰임.
  • 프로젝트 initialize
    • 위 예제의 경우, init 과정에서는 테라폼이 도커를 사용하기 위해 docker provider 플러그인을 다운로드함.
profile
기록하는 엔지니어 되기 💪
post-custom-banner

0개의 댓글