티스토리 뷰
반응형
1. 테라폼이란?
- IaaC를 위한 클라우드 인프라 환경 배포 툴의 일종
- 일반 서버, 가상 머신 등에서 동일 환경을 보장하는 Ansible과 비교하여 Terraform은 클라우드 플랫폼에 초점을 맞추는 것이 특징.
- 특징 :
- WRITE : Infrastructure as a Code
- PLAN : Preview changes before applying
- CREATE : Reproducible Infrastructure
- 클라우드 친화적인 툴이므로, 왠만한 클라우드 벤더에서 모두 지원한다고 함.
2. .tf 파일 살펴보기
resource "aws_key_pair" "ingnoh_key" {
key_name = "ingnohKey"
public_key = "${file("./ingnohKey.pub")}"
}
- resource : 테라폼에서 사용되는 Object의 종류 중 하나이며, 변수를 나타낸다.
- 데이터 자체를 나타내는 Object인 data도 있다.
- aws_key_pair : AWS에서 사용되는 리소스 이름이다.
- 즉, AWS의 리소스 중 하나인 key pair를 Terraform에서 부르는 방식이 aws_key_pair인 것!
- 이러한 리소스 이름은 Terraform Docs.에 사전 정의되어 있으므로, 그대로 사용하면 된다.
- ingnoh_key : tf. 파일들에서 해당 Object(resource인 aws_key_pair)를 식별하기 위해 붙이는 이름이다.
- 사용자의 임의 할당이 가능하지만, 되도록 모든 .tf 파일에서 unique한 값을 사용하는 것이 좋다.
> 위의 코드블록의 내용은 다음과 같다.
- AWS의 Key Pair인 ingnohKey를 ./ingnohKey.pub으로 가져오며, 이후에 다른(혹은 같은) .tf 파일에서 해당 aws_key_pair를 ingnoh_key라는 이름으로 참조한다.
3. 테라폼 사용하기
A. terraform init
- 최초 초기화용 명령어
- 수행시 .terraform 폴더가 생성
B. terraform plan
- terraform이 작업을 수행하기 전, .tf 파일들의 적용 값을 체크
- 실제로 변경 사항이 적용되는 것은 아니지만, apply 명령어 입력시 plan의 내용대로 적용되므로 꼼꼼한 확인이 필요하다!
- .tf에 정의된 리소스가 클라우드 상에 없을 경우 add / 변경될 경우 change / 삭제될 경우 destroy 카운트가 올라간다.
C. terraform apply
- 실제로 terraform에 의해 .tf 파일들의 내용이 클라우드에 생성된다.
- yes를 눌러 진행하며, 리소스 생성까지 시간이 걸릴 수 있다.
- 명령어 사용시 infra가 배치되며 .tfstate 파일이 생성된다.
D. terraform import
- 이미 클라우드 상에서 운영 중인 리소스를 Code의 형태로 가져온다.
- terraform에 익숙하지 않은 사용자들은 학습을 위해서도 import를 유용하게 활용해볼 수 있을 것.
- 사용 예시 : terraform import aws_instance.<resource name><instance ID>
E. terraform destroy
- .tfstate에 정의된 모든 리소스를 삭제한다.
F. TFstate란?
- Terraform을 통해 인프라를 생성할 경우, Json 형식의 .tfstate 파일이 생성된다.
- 해당 파일에는 Terraform으로부터 실행된 작업 정보가 저장된다.
- .tf <-> .tfstate <-> AWS Infra's 로 서로의 변경 사항을 확인하기 위함!
'HashiCorp. > terraform' 카테고리의 다른 글
[Terraform] S3 버킷 및 초기 폴더 생성 (0) | 2021.02.23 |
---|---|
[Terraform] IoT Assume Role이 적용된 Role 생성 및 정책 추가 (0) | 2021.01.05 |
[Terraform] AWS EC2 count 변수 및 CLB 연결 (0) | 2020.12.20 |
[Terraform] IAM Role - MalformedPolicyDocument: Has prohibited field Resource 에러 (0) | 2020.12.03 |
[Terraform] aws ELB에 VPC 지정 (0) | 2020.11.26 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Spring Cloud Config
- javascript
- shell
- dev
- hashicorp
- mysql
- terraform
- postgresql
- JPA
- Database
- AWS IoT
- kotlin
- eureka
- Linux
- AWS
- pgloader
- 코딩테스트
- react
- spring boot
- jQuery
- Node.js
- JEST
- Vault
- Git
- Gradle
- Docker
- etc
- IntelliJ
- Java
- Puppeteer
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함