일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- opt/anaconda3/bin/jupyter_mac.command
- terraform기본
- terraform with aws
- 직무분리
- Linux
- 최소권한
- aws terraform
- linux명령어
- 리눅스명령어
- AWS 공격테스트
- AWS CodeDeploy
- aws
- aws따라하기
- terraform기초
- 리눅스
- 쉘스크립트
- aws기본
- blue/green배포
- 리눅스기초
- GDPR
- AWS배포자동화
- cissp
- 주피터노트북 설치
- Cissp sdlc
- aws기초
- AWS CI/CD
- 리눅스기초명령어
- AWS실습
- AWS구축
- terraform따라하기
ysuekkom의 IT study note
[terraform 따라하기] IaC로 AWS 인프라 구축하기 본문
IaC(Infrastrucure as Code)?
코드로 인프라 스트럭처를 생성/관리 하는 것을 말하며, 대표적으로 테라폼의 HCL언어를 사용해 클라우드 자원을 생성함
*HCL(Hashicorp Configuration Language): 테라폼에서의 모든 설정과 리소스 선언/정의에 사용되며, 확장자는 .tf를 사용함
terraform?
*Provisioning: 프로세스 및 서비스를 실행하기 위한 준비 단계로, 네트워크 컴퓨팅 자원의 할당, 구축 및 각 자원의 의존성 체크 등의 단계로 나뉘어짐
*Provider: 테라폼과 외부 서비스(AWS, GCP 등)을 연결해주는 모듈로, 테라폼을 이용하여 각 클라우드 서비스의 자원을 생성하기 위해서 가장 먼저 셋업 해야 함
*resource: 특정 프로바이더가 제공해주는 자원이며, 프로바이더는 리소스 타입을 제공하고 이를 이용하여 클라우드 리소스를 생성/조작/삭제 등 관리가 가능함
terraform 동작원리를 이해하는 것이 가장 중요함*
terraform으로 작성되는 리소스들은 .tf 파일에 선언되는데,
1. 생성/수정하고자 하는 리소스를 작성한 뒤, 2. 각 프로바이더에 생성하기 위한 상태를 확인(생성되기 전 예비)한다. 그 이후, 3. 실제 프로바이더 상태에 리소스를 생성하는 과정을 거치게 된다.
1번 즉 개발자가 작성한 로컬 코드와 실제 프로바이더의 리소스(코드)상태의 일치함이 중요하다.
궁극적으로 실제 인프라와 백엔드에 저장된 상태가 일치하도록 만들고, 유지할 수 있도록 한다.
1~2: terraform plan
3: terraform apply
IaC와 Terraform에 대한 이해는 Hashicorp사 링크의 영상과 글을 참고하면 좋을 것!
사전 작업-terraform/aws cli 다운로드
아래 링크에서 OS에 맞는 zip 파일을 링크 복사, 붙여넣기를 통해 다운로드/unzip 파일명을 통해 압축을 풀어준다.
https://releases.hashicorp.com/terraform/0.12.29/
terraform 바이너리 확인
AWS CLIv2 설치 완료
terraform /usr/local/bin으로 이동시켜주고, 사용완료한 zip파일은 삭제해준다.
aws configure 작업(액세스키와 시크릿키, 리전 등 입력)
따라하기 시작!
ec2 인스턴스를 생성 및 ssh로 연결 후 작업
디렉터리를 생성하여 provider.tf를 생성, 내용을 작성해준다
* resource "aws_vpc" "main"{
cidr_block = "10.0.0.0/16"
}
>>순서대로, aws(프로바이더)에서 제공하는 리소스(vpc) 타입, 리소스의 임의 name로 테라폼 코드의 다른 코드에서 참조시 사용된다.
그리고나서 terraform paln 실행 시, 에러 --> terraform init가 먼저!
Error메시지가 뜨면 에러메시지를 확인하여 반영하기
terraform plan
>>선언한 자원들의 실제 생성 가능 여부를 체크하는 단계로, terraform apply전 항상 plan으로 체크할 것.
이 단계에서 실제로 작성한 코드(리소스)들이 프로바이더에 적용되었을 때 terraform에서 수행할 내용에 대해 상세히 피드백을 받을 수 있음. 즉 생성 예정인 리소스들에 대한 체크를 한다고 생각.
+는 신규로 생성되었다는 의미, ~는 업데이트 되었다는 의미, - destroy는 삭제 의미(아래 사진은 신규로 추가만 되었기에 변경사항없이 +만 확인 가능함)
>Plan의 결과가 1 to add, 0 to change, 0 to destroy로 확인 가능
terraform apply
선언한 리소스들을 plan으로 확인 후, apply를 통해 실제 프로바이더 서비스에 적용하여 생성하는 단계
>>성공 시, 실제 aws console에서 생성된 vpc를 확인 할 수 있음
aws console에 접속하여 선언한 리소스가 생성되었는지 확인
vpc에 이어 자원 생성하기 계속
subnet 생성하기 > public, private
내부통신을 위한 private subnet 1개, 외부 통신을 위한 public subnet 을 각각 선언해주고, plan, apply해 준다
igw, nat(eip 포함) 생성하기
nat gateway 생성은 시간 오래걸림
>>각 리소스들을 선언한 코드
aws console에서 확인한 생성된 vpc, subnet, igw, nat
실습 후, 각 자원들은 반드시** 삭제해주어야한다(provider.tf에서 주석처리로 destroy 가능)
본 실습은 테스트용도로 리소스 정보를 공개한 것이지만, 공개되지 않도록 주의할 것!
'DevOps > terraform' 카테고리의 다른 글
[Terraform 따라하기] Terraform Backend 관리, remote state file & output으로 참조하기 (0) | 2023.04.27 |
---|---|
[Terraform 기초] S3 Bucket 및 IAM Role, Policy 생성하기 with AWS (0) | 2023.04.26 |
[terraform 기초] 라우팅테이블 설정하기 (0) | 2022.12.18 |