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 |