Terraform 입문 - 2. 인 프 라 구축
우 리 는 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.micro
ami
지정ami-408c7f28
.하면, 만약, 만약...us-east-1
의 region 은 이 region 의 ami 를 지정 해 야 합 니 다. 모든 region 의 ami 가 특정 하기 때 문 입 니 다.access key 와 secret key 로 교체
ACCESS_KEY_HERE
와 SECRET_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 apply
개 aws_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 을 사용 하여 첫 번 째 인 프 라 를 구축 한 것 을 축하합니다.설정 문법, 기본 실행 계획 인 스 턴 스 를 보 았 고 상태 파일 을 이해 하 였 습 니 다.
다음 단계 에 우 리 는 인 프 라 를 계속 변경 하고 소각 할 것 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.