Terraform 입문 - 2. 인 프 라 구축

8894 단어 shelllinux
Terraform 설치 가 완 료 된 후에 우 리 는 직접 인 프 라 시설 을 만 들 기 시작 했다.
우 리 는 AWS 에 입문 안내 서 를 만 들 기 위해 인 프 라 를 만 들 었 습 니 다. 가장 유행 하고 이해 할 수 있 지만 Terraform 은 많은 provider 를 관리 할 수 있 습 니 다. 하나의 프로필 에 여러 provider 를 관리 하 는 것 을 포함 합 니 다.사용 사례 중 일부 예 가 있다.
AWS 계 정 이 없 으 면 만 듭 니 다.입문 안내 에 서 는 AWS 가 무료 로 사용 하 는 자원, 즉 무료 라 는 것 이다.만약 당신 이 이미 AWS 계 정 을 가지 고 있다 면, 당신 은 약간의 돈 을 충전 해 야 할 수도 있 지만, 많 게 는 몇 달러 를 초과 하지 않 을 것 입 니 다.
경고!만약 당신 이 사용 하 는 것 이 AWS 무료 시용 계 정 이 아니라면, 이러한 예 를 실행 하기 위해 충전 이 필요 할 수도 있 습 니 다.너 는 최대 몇 달러 를 충전 해 야 하지만, 우 리 는 발생 할 수 있 는 어떠한 비용 도 책임 지지 않 는 다.
배치 하 다.
Terraform 에서 인 프 라 를 설명 하 는 파일 을 Terraform 프로필 이 라 고 합 니 다.이제 AWS 의 EC2 인 스 턴 스 를 시작 하기 위해 첫 번 째 프로필 을 쓸 것 입 니 다.
프로필 문 서 는 여기 있 습 니 다.설정 파일 도 json 파일 을 주 는 것 일 수 있 지만, 기계 가 설정 파일 을 만 들 때 만 json 형식 을 사용 하 는 것 을 권장 합 니 다.
전체 프로필 의 내용 은 다음 과 같다.우 리 는 이후 의 모든 단계 에서 점차적으로 설명 할 것 이다.다음 내용 을 example.tf 라 는 파일 에 저장 합 니 다.Terraform 이 모든 *.tf 파일 을 불 러 올 것 이기 때문에 디 렉 터 리 에 다른 *.tf 파일 이 없 는 지 확인 하 십시오.
provider "aws" {
  access_key = "ACCESS_KEY_HERE"
  secret_key = "SECRET_KEY_HERE"
  region     = "us-east-1"
}

resource "aws_instance" "example" {
  ami           = "ami-2757f631"
  instance_type = "t2.micro"
}

메모: 위의 설정 은 대부분의 AWS 계 정 에서 작 동 하 며 기본 VPC 에 접근 합 니 다.EC2 고전 네트워크 사용자instance_type 지정t1.microami 지정ami-408c7f28 .하면, 만약, 만약...us-east-1 의 region 은 이 region 의 ami 를 지정 해 야 합 니 다. 모든 region 의 ami 가 특정 하기 때 문 입 니 다.
access key 와 secret key 로 교체 ACCESS_KEY_HERESECRET_KEY_HERE 하면 이 페이지 에서 가 져 올 수 있 습 니 다.우 리 는 지금 그들 을 하 드 코딩 하지만, 입문 안내서 뒤에 있 는 것 은 그들 을 변수 로 추출 할 것 이다.
메모: AWS 증빙 만 누락 되면 Terraform 은 저 장 된 API 증빙 에서 자동 으로 검색 합 니 다 (예: ~/aws/credentials 에서).또는 IAM 인 스 턴 스 프로필 증빙서류.원본 코드 관리 에 파일 을 서명 하거나 여러 관리자 가 있 는 경우 에는 깨끗 해 야 합 니 다.여기 서 자세 한 내용 을 살 펴 보 세 요.프로필 에 증빙 정 보 를 남 겨 두 면 원본 코드 관리 외 에 증빙 정 보 를 저장 할 수 있 고 서로 다른 사용자 에 게 서로 다른 IAM 증빙 서 류 를 사용 할 수 있 으 며 프로필 을 수정 하지 않 아 도 됩 니 다.
이것 은 실행 가능 한 Terraform 프로필 입 니 다.일반적인 구 조 는 직관 적 이 고 직접적 이 어야 한다.provider 블록 은 provider 이름 을 지정 하 는 데 사 용 됩 니 다. 우리 의 인 스 턴 스 에서 "aws"라 고 합 니 다.provider 자원 의 창설 과 관 리 를 책임 진다.하나의 Terraform 설정 파일 이 여러 provider 로 구성 되면 여러 provider 블록 이 있 을 수 있 습 니 다. 이것 은 흔히 볼 수 있 는 상황 입 니 다.resource 블록 은 인 프 라 에 존재 하 는 자원 을 정한다.하나의 자원 은 물리 적 구성 요소 일 수도 있 습 니 다. 예 를 들 어 EC2 인 스 턴 스 나 Heroku 응용 과 같은 논리 적 자원 일 수도 있 습 니 다.resource 블록 이 시작 되 기 전에 두 개의 문자열 이 있 습 니 다. 자원 형식 과 자원 이름 입 니 다.우리 의 실례 에서 자원 유형 은 'aws instance' 이 고 자원 이름 은 'example' 입 니 다.자원 형식의 접두사 맵 provider.우리 의 인 스 턴 스 에서 "aws instance"는 Terraform 이 "aws"provider 에 의 해 관리 되 었 음 을 자동 으로 알려 줍 니 다.resource 블록 내 부 는 이 자원 의 배치 입 니 다.모든 자원 provider 에 독립 되 어 있 으 며 provider 에서 참고 하여 완전히 열거 되 어 있 습 니 다.우리 의 EC2 실례 에 대해 우 리 는 ubuntu 에 AMI 를 지정 한 다음 에 't2. micro' 의 실례 를 요청 합 니 다. 왜냐하면 우 리 는 무료 자격 이 있 기 때 문 입 니 다.
설치 하 다.
새 프로필 이나 버 전 관리 도구 에서 검출 된 존재 하 는 설정 을 위 한 첫 번 째 명령 은 terraform init 입 니 다. 로 컬 설정 과 데 이 터 를 다음 명령 으로 초기 화 합 니 다.
Terraform 은 플러그 인 기반 구 조 를 사용 하여 많은 인 프 라 와 서비스 제공 자 를 지원 합 니 다.Terraform '0.10.0' 부터 모든 공급 자 는 자신 들 의 패키지 와 헤어스타일 의 바 이 너 리 파일 을 가지 고 Terraform 에서 분리 된다.terraform init 설정 파일 을 다운로드 하기 위해 provider 다운로드 플러그 인 을 자동 으로 포함 합 니 다.이 인 스 턴 스 에는 "aws"플러그 인 만 포함 되 어 있 습 니 다.
$ terraform init
Initializing the backend...
Initializing provider plugins...
- downloading plugin for provider "aws"...

The following providers do not have any version constraints in configuration,
so the latest version was installed.

To prevent automatic upgrades to new major versions that may contain breaking
changes, it is recommended to add version = "..." constraints to the
corresponding provider blocks in configuration, with the constraint strings
suggested below.

* provider.aws: version = "~> 1.0"

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your environment. If you forget, other
commands will detect it and remind you to do so if necessary.

aws provider 플러그 인 은 다른 얇 은 기록 파일 과 함께 현재 디 렉 터 리 하위 디 렉 터 리 에 다운로드 되 어 설치 되 었 습 니 다.
출력 정 보 는 설 치 된 플러그 인의 버 전 을 표시 하고 앞으로 호 환 되 는 버 전 을 설치 할 수 있 도록 설정 파일 에 버 전 을 지정 하 는 것 을 권장 합 니 다.다음 단계 에서 이 단 계 는 필수 가 아 닙 니 다. 이 프로필 뒤에 폐기 되 기 때 문 입 니 다.
적용 변경
메모: 이 안내서 에 열 거 된 명령 은 teraform 0.11 및 이상 버 전에 적 용 됩 니 다.더 빠 른 버 전 은 응용 전에 사용 해 야 합 니 다.terraform init 집행 계획 을 살 펴 보라 고 명령 했다.쓰다terraform plan 현재 teraform 버 전 을 확인 하 라 고 명령 합 니 다.
현재 디 렉 터 리 에서 만 든 terraform version 을 예 로 들 어 실행 example.tf 합 니 다.다음 과 같은 출력 을 볼 수 있 습 니 다. 우 리 는 공간 을 절약 하기 위해 일부 출력 을 삭 제 했 습 니 다.
$ terraform apply
# ...

+ aws_instance.example
    ami:                      "ami-2757f631"
    availability_zone:        ""
    ebs_block_device.#:       ""
    ephemeral_block_device.#: ""
    instance_state:           ""
    instance_type:            "t2.micro"
    key_name:                 ""
    placement_group:          ""
    private_dns:              ""
    private_ip:               ""
    public_dns:               ""
    public_ip:                ""
    root_block_device.#:      ""
    security_groups.#:        ""
    source_dest_check:        "true"
    subnet_id:                ""
    tenancy:                  ""
    vpc_security_group_ids.#: ""

이 출력 은 실행 계획 을 보 여 줍 니 다. teraform 은 설정 파일 에 따라 그 동작 을 수행 하여 인 프 라 를 바 꿀 것 입 니 다.출력 형식 은 도구 가 출력 한 diff 와 유사 합 니 다. 예 를 들 어 git.출력 내용 은 terraform applyaws_instance.example 에 있 습 니 다. Terraform 이 이 자원 을 만 들 것 임 을 의미 합 니 다.그 아래 설정 할 속성 을 표시 합 니 다.값 이 + 일 때 자원 이 생 성 되 어야 알 수 있 음 을 의미 합 니 다. 실 패 를 보고 할 때 오류 정 보 를 읽 고 보고 한 오 류 를 복구 합 니 다.이 단계 에서 설정 파일 의 문법 오류 일 수 있 습 니 다.
계획 이 성공 적 으로 생 성 되면 Terraform 은 실행 전에 일시 정지 하고 확인 을 기다 릴 것 입 니 다.만약 계획 에 잘못된 정보 나 위험 정보 가 있다 면, 여기에서 중지 하 는 것 은 안전 하 며, 인 프 라 시설 에 대해 어떠한 변화 도 하지 않 을 것 이다.계획 이 받 아들 일 수 있 을 것 같 으 면 터미널 입력 terraform apply 을 확인 하고 실행 하 는 것 이다.
이 계획 을 실행 하 는 데 몇 분 이 걸 립 니까? EC2 인 스 턴 스 가 사용 할 수 있 을 때 까지:
# ...
aws_instance.example: Creating...
  ami:                      "" => "ami-2757f631"
  instance_type:            "" => "t2.micro"
  [...]

aws_instance.example: Still creating... (10s elapsed)
aws_instance.example: Creation complete

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

# ...

이후 Terraform 실행 이 완료 되면 EC2 터미널 에서 생 성 번호 의 EC2 인 스 턴 스 를 볼 수 있 습 니 다.(설정 파일 과 같은 사용 가능 한 영역 을 확인 하 십시오!) Terraform 도 데 이 터 를 쓸 것 입 니 다 yes.이 상태 파일 은 매우 중요 합 니 다.만 든 자원 ID 를 추적 하기 때문에 Terraform 은 어떤 자원 을 관리 하 는 지 알 고 있 습 니 다.이 파일 은 teraform 을 사용 할 수 있 는 모든 사람 에 게 저장 되 고 배포 되 어야 합 니 다.일반적으로 Terraform 을 사용 할 때 원 격 상 태 를 설정 하여 상 태 를 자동 으로 공유 하 는 것 을 권장 하지만 입문 안내 와 같은 간단 한 환경 에 대해 서 는 필수 가 아니다.
당신 은 terraform.tfstate 을 사용 하여 현재 상 태 를 검사 할 수 있 습 니 다:
$ terraform show
aws_instance.example:
  id = i-32cf65a8
  ami = ami-2757f631
  availability_zone = us-east-1a
  instance_state = running
  instance_type = t2.micro
  private_ip = 172.31.30.244
  public_dns = ec2-52-90-212-55.compute-1.amazonaws.com
  public_ip = 52.90.212.55
  subnet_id = subnet-1497024d
  vpc_security_group_ids.# = 1
  vpc_security_group_ids.3348721628 = sg-67652003

자원 을 만 드 는 것 을 통 해 우 리 는 많은 정 보 를 수집 한 것 을 볼 수 있다.이 값 들 은 다른 자원 과 출력 을 설정 하기 위해 인 용 될 수 있 습 니 다. 입문 안내 뒤의 부분 에서 설명 할 것 입 니 다.
준비 하 다.
우리 가 이 절 에서 만 든 EC2 는 제 시 된 AMI 를 기반 으로 하지만 추가 소프트웨어 가 설치 되 어 있 지 않 습 니 다.미 러 기반 구 조 를 실행 하고 있다 면 이것 이 필요 합 니 다.
어쨌든 많은 인 프 라 시설 은 어느 정도 초기 화 나 소프트웨어 준비 단계 가 필요 하 다.이 를 위해 Terraform 은 provider 를 지원 합 니 다. 잠시 후 입문 안내 에서 말씀 드 리 겠 습 니 다.
다음 단계
Terraform 을 사용 하여 첫 번 째 인 프 라 를 구축 한 것 을 축하합니다.설정 문법, 기본 실행 계획 인 스 턴 스 를 보 았 고 상태 파일 을 이해 하 였 습 니 다.
다음 단계 에 우 리 는 인 프 라 를 계속 변경 하고 소각 할 것 이다.

좋은 웹페이지 즐겨찾기