terraform 설정하기

hyuckhoon.ko·2020년 12월 26일
0

What I learned in first year

목록 보기
19/146

1. .gitignore 수정

기존 gitignore 파일에
terraform 관련 ignore파일을 추가해야 한다.
( https://www.toptal.com/developers/gitignore )



2. deploy 디렉토리 생성

최상위 디렉토리 안에 deploy 라는 디렉토리를 생성한다.

이는 모듈화 및 유지/보수 측면을 고려한 것이다.

terraform 관련 파일(.tf)들은 모두
deploy 디렉토리 내부에서 관리될 것이다.


main.tf

terraform {
    backend "s3" {
        bucket = "info-share-tfstate"
        key = "recipe-app.tfstate"
        region = "us-east-1"
        encrypt = true
        dynamodb_table = "recipe-app-api-devops-tf-state-lock"
   } 
}

provider "aws" {
    region = "us-east-1"
    version = "~> 3.22.0"
}



docker-compose.yml

version: '3.7'

services:
  terraform:
    image: hashicorp/terraform:0.14.3
    volumes:
      - .:/infra 
    working_dir: /infra
    environment:
      - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
      - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
      - AWS_SESSION_TOKEN=${AWS_SESSION_TOKEN}



이제 terraform을 초기화하자.
그 전에 해야할 작업이 있다.

터미널에 아래와 같은 명령어를 타이핑하자.
(전제: aws-vault가 설치되어 있어야 한다.)

aws-vault exec 'aws의 iam user 계정' --duration=12h

위의 command를 타이핑하면 MFA (멀리팩터 인증)을 하라는 부분이 출력된다.

스마트폰에 설치된 OTP를 통해 6자리 숫자를 입력한다.

(이 부분은 AWS iamuser 및 root 유저의 rule 설정과 관련된 부분이다.







3. terraform 초기화

docker-compose -f deploy/docker-compose-proxy.yml run --rm terraform init

위와 같이 경고 메시지를 발견했다.
deprecated syntax를 사용하고 있다는 건데,
terraform 공식문서를 구글링하여 아래와 같이 main.tf 파일을 수정했다.


  • terraform 공식문서 자료

  • main.tf 코드 수정
terraform {
  backend "s3" {
    bucket         = "info-share-tfstate"
    key            = "recipe-app.tfstate"
    region         = "us-east-1"
    encrypt        = true
    dynamodb_table = "recipe-app-api-devops-tf-state-lock"
  }
  required_providers {
    aws = {
      version = "~> 3.22.0"
      source  = "hashicorp/aws"
    }
  }
}

provider "aws" {
  region = "us-east-1"
}



  • 초기화 완료






0개의 댓글