Ssoon

AWS EKS - Terraform - 1 본문

AWS EKS Workshop Study 2기

AWS EKS - Terraform - 1

구구달스 2024. 4. 26. 12:01
CloudNet@ 팀의 AWS EKS Workshop Study 2기 - 8주차

 

1. terraform init

terraform init 명령어는 Terraform 환경을 설정하고 준비하는 데 사용됩니다. 

  • Terraform 구성 파일을 실행하고, 필요한 플러그인과 백엔드 구성을 초기화합니다.
  • 현재 디렉토리의 Terraform 구성 파일과 모듈을 로드하고 의존성을 해결합니다.
  • 로컬 또는 원격 백엔드에 상태 정보를 저장할 수 있도록 Terraform을 설정합니다.

2. terraform plan

terraform plan 명령어는 Terraform이 인프라를 변경할 때 어떻게 작동할지 미리 계획하고 시뮬레이션하는 데 사용됩니다. 

  • 현재 상태와 원하는 상태를 비교하여 변경 사항을 계산합니다.
  • 새로 생성될 리소스, 수정될 리소스, 삭제될 리소스 등을 식별하여 요약합니다.
  • 변경 사항을 실제로 적용하기 전에 Terraform이 어떤 작업을 수행할지 미리 확인할 수 있도록 합니다.

3. terraform apply

terraform apply 명령어는 Terraform이 정의된 인프라 변경 사항을 적용하여 인프라를 프로비저닝하는 데 사용됩니다. 

  • terraform plan 명령을 실행하여 계획한 변경 사항을 확인한 후에 사용자에게 승인을 받습니다.
  • 변경 사항을 Terraform에게 적용하고, 리소스를 생성하거나 업데이트합니다.
  • 변경 사항을 적용하고 나면 Terraform은 상태 파일을 업데이트하여 현재 인프라 상태를 기록합니다.

4. terraform destroy

terraform destroy 명령어는 Terraform이 관리하는 인프라 리소스를 제거하여 인프라를 삭제하는 데 사용됩니다. 주

  • 현재 정의된 인프라를 모두 제거하고 초기 상태로 되돌립니다.
  • 사용자에게 승인을 받은 후에 리소스를 제거합니다.
  • 삭제된 리소스에 대한 상태 파일 업데이트를 수행하여 인프라 상태를 업데이트합니다

관리자 권한이 있는 AWS 계정 생성

  • 사용자 이름 을 입력

  • AdministratorAccess  IAM 정책을 추가

  • 사용자 생성

  • 액세스키 생성

 

  • 생성된 Access key ID 와 Secret access key 를 잘 보관

CLI 환경 구성을 위해, AWS Cloud9 인스턴스 생성

  • 환경 생성

  • Environment name 을 입력, 설정 그대로 사용

  • AWS managed temporory credentials 를 비활성화

  • Access key ID 와 Secret access key 를 입력

  • Terraform 설치 

Terraform 으로 Resource 생성

  • 기본 환경 준비

  • Amazon Linux 2 최신 ami id 찾기

 

  • aws ec2 describe-images: AWS EC2 서비스에 명령을 보내 가상 머신 이미지(AMI) 정보를 조회합니다.
  • --owners amazon: 조회 대상을 Amazon에서 제공하는 AMI로 제한합니다.
  • --filters: 필터 조건을 설정합니다. 여기서는 다음 두 가지 조건을 사용합니다.
    • Name=name,Values=amzn2-ami-hvm-2.0.*-x86_64-gp2: 이름 필터로 "amzn2-ami-hvm-2.0"으로 시작하고, ".x86_64-gp2" 문자열을 포함하는 AMI 이름을 검색합니다. ( gwiazdka(*)은 와일드카드 문자로 모든 문자열을 허용합니다.)
    • Name=state,Values=available: 상태 필터로 사용 가능한(available) AMI만 조회합니다.
  • --query: 결과 데이터에서 원하는 값을 추출하는 JMESPath 식을 지정합니다.
    • Images: describe-images 명령어의 결과에서 Images 배열을 선택합니다.
    • sort_by(@, &CreationDate): Images 배열을 만들 시간(CreationDate) 순으로 정렬합니다.
    • [-1]: 정렬된 배열의 마지막 요소(최신 AMI)를 선택합니다.
    • .ImageId: 선택된 AMI 객체에서 ImageId 속성 값을 추출합니다.
  • --output text: 결과를 텍스트 형식으로 출력합니다.

  • 테라폼 코드 파일 작성

  • provider "aws" { ... }: 이 부분은 Terraform에서 AWS를 사용하기 위한 공급자(provider) 설정입니다. 여기서는 AWS를 사용하고 있으며, 지정된 리전은 "ap-northeast-2" (서울 리전)입니다.
  • resource "aws_instance" "example" { ... }: 이 부분은 Terraform에서 AWS 인스턴스를 생성하기 위한 리소스(resource) 설정입니다. 여기서는 aws_instance 유형의 리소스를 정의하고, 이 리소스의 이름은 "example"입니다.
    • ami = "$AL2ID": 이 부분은 사용할 AMI(Amazon Machine Image)를 지정하는 부분입니다. 여기서는 $AL2ID라는 변수를 사용하여 AMI를 설정하고 있습니다.
    • instance_type = "t2.micro": 이 부분은 인스턴스 유형을 지정하는 부분입니다. 여기서는 "t2.micro" 유형의 인스턴스를 사용하고 있습니다.

  • 배포 실행

terraform init

Terraform 프로젝트를 초기화하는 데 사용됩니다. 이 명령어는 주로 Terraform을 사용할 새로운 디렉토리나 프로젝트에서 처음 실행될 때 사용됩니다. 이 명령어를 실행하면 다음과 같은 일이 수행됩니다:

  1. 플러그인 다운로드: Terraform은 사용자가 정의한 인프라를 제어하기 위해 특정 제공자(예: AWS, Azure)에 대한 플러그인을 사용합니다. terraform init은 이러한 플러그인을 다운로드하고 설치합니다. 이를 통해 Terraform은 해당 제공자의 API를 호출하여 인프라를 관리할 수 있습니다.
  2. 백엔드 구성 초기화: Terraform은 상태 파일을 사용하여 관리 중인 인프라 리소스의 현재 상태를 추적합니다. terraform init은 이 상태 파일을 저장할 백엔드를 설정합니다. 이 백엔드는 로컬 파일 시스템이 될 수도 있고, 원격 저장소(예: Amazon S3, Azure Blob Storage)가 될 수도 있습니다. 백엔드 설정은 프로젝트의 backend.tf 파일에 저장됩니다.
  3. 모듈 및 템플릿 로드: Terraform은 프로젝트의 구성 파일과 모듈을 로드하여 처리합니다. 이 단계에서는 프로젝트 디렉토리에 있는 Terraform 구성 파일들을 로드하고, 사용자가 정의한 모듈을 확인하고 로드합니다.
  4. 의존성 해결: Terraform은 프로젝트에 정의된 각 모듈과 리소스의 의존성을 해결합니다. 이를 통해 Terraform은 리소스를 생성할 때 의존하는 다른 리소스를 먼저 생성하고, 수정 또는 제거할 때는 의존하는 리소스를 적절하게 처리할 수 있습니다.

  • terraform plan
  • terraform apply

  • AWS Console 확인

  • 테라폼 정보 확인

1. terraform state list

terraform state list 명령어는 Terraform 상태 파일에 있는 리소스들의 목록을 표시합니다. 주요 기능은 다음과 같습니다:

  • Terraform이 추적하고 있는 현재 인프라의 상태 정보를 열거합니다.
  • 상태 파일에 기록된 각 리소스의 식별자를 나열합니다.

이 명령을 실행하면 Terraform이 추적하고 있는 모든 리소스의 이름이 출력됩니다. 이를 통해 어떤 리소스가 Terraform에 의해 관리되고 있는지 확인할 수 있습니다.

2. terraform show

terraform show 명령어는 Terraform이 관리하는 인프라의 상세 정보를 표시합니다. 주요 기능은 다음과 같습니다:

  • 현재 Terraform 상태 파일에 저장된 인프라 리소스의 상세 정보를 표시합니다.
  • 각 리소스의 속성, 값, 메타데이터 등을 포함한 자세한 정보를 제공합니다.
  • 인프라 구성을 검사하고, 실제로 생성된 리소스의 설정을 확인할 수 있습니다.

  • 삭제하기

'AWS EKS Workshop Study 2기' 카테고리의 다른 글

AWS EKS - Terraform - 2  (0) 2024.04.26
AWS EKS - GitOps - Argo CD  (0) 2024.04.19
AWS EKS - GitOps - Flux  (1) 2024.04.19
AWS EKS - Security - Pod Security Standards  (1) 2024.04.12
AWS EKS - Security - Amazon GuardDuty for EKS  (0) 2024.04.12
Comments