IaaS/IaC(InfraAsCode)

(Terraform) Terraform으로 IaC(Infra As Code) 방식으로 AWS 세팅

armyost 2021. 8. 31. 14:32
728x90

Terraform 은

가. tf 파일을 코딩
나. plan으로 정합성 체크
다. apply로 실제로 적용 

하는 IaC 툴이다. 

 

Terraform으로 AWS에만 배포할 수 있는 것은 아니지만, 우선 실습을 위해 AWS에 다가 IaC 배포를 해보겠다.  

 

1. Terraform 및 Visual Studio Code 설치

 

우선 본인 PC혹은 개발자 콘솔에 Terrafrom을 설치하자. 

아래 링크에서 OS에 맞는 인스톨을 받는다. (나의 경우 Win10 사용)

 

https://www.terraform.io/downloads.html

 

Download Terraform - Terraform by HashiCorp

Download Terraform

www.terraform.io

 

다운로드 받은 zip을 특정 폴더에서 압축해제한다. 

 

그리고 제어판-시스템 환경변수를 등록하여 CMD창에서 명령어 만으로 불러올수 있게 path를 등록한다. 

 

terraform -v 커맨드 호출시 아래와 같이 잘 먹으면 PATH 설정이 잘 된것이다. 

 

(선택) 그리고 tf 파일 생성 및 프로젝트 관리를 위해 Visual Studio Code 를 설치한다. VSC 가 아니더라도 vi에디터든 메모장이던 작성만 가능하면 상관없다. 

 

https://code.visualstudio.com/

 

Visual Studio Code - Code Editing. Redefined

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.  Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

code.visualstudio.com

 

2. Terraform 이니셜라이징

 

- 가장 먼저 특정 클라우드 프로바이더를 정한 뒤, 해당 프로바이더를 사용하기 위한 설정을 저장해야한다. 프로바이더는 위에서 언급했던대로 AWS, GCP 등 여러가지를 사용할 수 있지만 여기서는 AWS를 기준으로 한다.아래의 내용으로 aws-provider.tf 파일을 저장한다. (해당 Access Key, Secret Key는 AWS의 사용자 생성시 만들었을 터이다.)

access_key : AWS 사용자 정보 중 Access key ID

secret_key : AWS 사용자 정보 중 Secret access key

 

- 위 tf파일은 프로젝트 파일의 최상위 경로에 작성한다. 

   혹시 현재 CMD 위치가 프로젝트 최상위 경로가 아니라면 cd 커맨드로 이동한다. 

 

- 현재 프로젝트 폴더 내 파일들이다. 

 

- 이제 terraform init 을 수행한다. 

 

- tree 커맨드로 생성된 파일을 보면 아래와 같다. 

 

3. Terraform으로 AWS 키페어 Import (EC2 생성 및 접근을 위함)

 

- AWS 에서 받은 Keypair로 Puttygen 혹은 openssh 모듈을 통해 공개키를 만든다. (~~~.pub 확장자)

 

- key.tf를 작성한다.

 

 

 

 

※ key.tf파일 설명


출처 : https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/key_pair

 

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/key_pair

 

registry.terraform.io

resource "aws_key_pair" "deployer" {
  key_name   = "deployer-key"
  public_key = "ssh-rsa AAAAAAAAAAAAAAAAAAAAAAAAAAbX8ZbabVohBK41 email@example.com"
}

resource는 어떤 자원을 정의할 것인지에 대한 명시

"aws_key_pair" - resource 이름 (terraform Doc에 정의되어 있는 이름)

"deployer" - 앞으로 terraform 내에서 사용할 alias

 

key_name - (Optional) 키 이름 (import 명령어에서 사용할 예정)

public_key - (Required) The public key 파일명. 위와 같이 정의하면 cmd 수행 경로에 .pub 파일이 있다는 뜻임


 

 

 

- terraform import 수행

terraform import aws_key_pair.terraform-key jpkim-pem

 

4. 테라폼에서 VPC, Subnet, 생성하기 테스트

 

- vpc 및 subnet 생성 tf 작성

 

- terraform plan 수행을 통한 검증

- terraform apply를 통한 실 적용 (apply를 하게 되면 실 적용할 것인지 물어본다.)

'IaaS > IaC(InfraAsCode)' 카테고리의 다른 글

TerraTest 란?  (0) 2022.07.20
Ansible 설치  (0) 2022.07.07
(IaC) Chef, Puppet, Ansible, SaltStack 의 비교  (0) 2022.03.03