728x90
📌INDEX 백엔드(Backend) Terraform Cloud ✔️ 백엔드(Backend) 현재 사용하고 있는 백엔드: Local Backend s3에 상태를 저장하고 공유 : s3, dynamo DB 를 이용한 원격 백엔드 예시 terraform { backend "s3" { bucket = "mybucket" key = "path/to/my/key" region = "us-east-1" } } 동시에 접근하는 것을 방지하기 위해 locking 사용하며, s3는 잠금 기능이 없기 때문에 dynamodb를 사용하여 locking한다. { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:GetItem", ..
Data Source: aws_ami 프로바이더에서 정보를 가져오는 것을 모두 데이터 소스라한다. data 블록에 작성하며, 리소스와 정의하는 방법은 동일하다. owner 필수(required) 필터(filter)를 걸어서 검색 다음과 같이 Data Sources를 확인할 수 있다. 참고) ubuntu image 검색 사이트 💻 실습: aws_ami data source로 ami 생성하기 📝 data_source.tf data "aws_ami" "ubuntu_image" { owners = ["099720109477"] most_recent = true #가장 최신 버전을 사용할 것인가 filter { name = "name" values = ["ubuntu/images/hvm-ssd/ubuntu-*-a..
count Meta-Argument count는 resource에서만 사용 가능 count는 resource의 가장 처음에 적는 것이 관습 0부터 시작하는 count.index를 참조하여 사용 예시 : count에 값에 정수인 인수가 포함된 경우 Terraform은 그만큼의 인스턴스를 생성한다. resource "aws_instance" "server" { count = 4 # create four similar EC2 instances ami = "ami-a1b2c3d4" instance_type = "t2.micro" tags = { Name = "Server ${count.index}" } } 📝main.tf : eip에서 instance에 count.index를 통해 참조한다. resource "..
✔️ 모듈(Module)이란? Module Terraform AWS Module Github 저장소 ansible에서의 역할(role)과 비슷하며, 자주 사용하는 리소스들을 모아둔 컨테이너이다. 모듈의 종류 root 모듈 : 기본 작업 디렉터리의 파일에 정의된 리소스 child 모듈 : 모듈에 의해 호출된 모듈 모듈 초기화 초기화해야 모듈이 다운로드 된다. terraform init 예시 module "myvpc" { source = ...입력 변수... } resource "aws_instance" "web" { subnet_id = module.myvpc. } 💻 AWS VPC 모듈 사용해보기 여기에 이어서 작성한다. 모듈을 사용할 때는 output 변수 이름 잘 확인해야 한다❕ : aws vpc m..
📌INDEX Provisioners Provisioner 연결 실습해보기 Taint란? Ansible 실행 방법 ✔️ Provisioners Provisioners는 terraform에서 제공하는 공통 argument이다. "Provisioners are a Last Resort " : 최후의 수단이라는 뜻으로, 되도록 user-data를 사용하는 것을 권장한다. ☁️ 참고 user_data를 먼저 실행할 지 provisioner를 먼저 실행할 지 결정할 수 있는 방법은 없고, provisioner는 순서대로 실행된다. Provisioner 종류 file: 파일 복사 새로 생성된 리소스로 파일 또는 디렉토리를 복사하는 데 사용한다. resource "aws_instance" "web" { # ... # ..