■ 테라폼을 위한 준비
1. AWS CLI가 설치된 운영체제 - Client 실행
2. 테라폼 설치
aws sts get-caller-identity : 사용자 정보 확인하는법
echo $SHELL
ls -al // .zshrc인지 .bashrc인지 확인
vim ~/.zshrc
맨아래 alias tf='terraform' 추가
source ~/.zshrc
tf --version
terraform -install-autocomplete
================================
cd 01-terraform
rm -rf *.*
ls //비어있어야함
mkdir local
mkdir one-server
mkdir one-webserver
● 공급자를 local로 사용
cd local
vim main.tf
Local 지정.pdf 복사붙혀넣기
tree
tf init
cd ..
cd one-server
vim main.tf
provider "aws" {
region = "ap-northeast-2"
}
tf init
cd ../local
vim main.tf
tf fmt //포매팅(띄어쓰기 맞춰주는)
vim main.tf
tf validate //문법검사
main.tf
- 공급자 => init => plan => apply
- 리소스 정의
■ Terraform 명령어
명령 설명
terraform -help terraform 사용법
terraform init 테라폼을 수행하기 위한 공급자의 플러그인들을 초기 설정하는 명령어
terraform fmt terraform 표준 스타일로 파일 구성 포매팅
terraform validate 파일의 구성이 유효한지 문법 검사Terraform 설치/설정 2 명령 설명
terraform plan 테라폼을 통해 실제로 생성되고 변경되는 내역을 보여준다. 더하기(+) : 생성 빼기(-) : 제거 물결(~) : 변경
terraform apply terraform apply-auto-approve
실제 작업을 진행, 변경 내역을 반영하려면 yes 입력 yes를 자동실행
terraform output 출력 파일
terraform state list 주어진 주소와일치하는 상태 파일의 모든 리소스 확인
terraform graph Graph를 통해 종속성 및 생성할 리소스에 대한 관계를 시각적으로 볼 수 있는 기능
terraform destroy terraform destroy -auto-approve 인프라 삭제
cd.. // 01-terraform에
vim .gitignore
1 .terraform
2 *.tfstate
3 *.tfstate.backup
git init
■ 인스턴스 만들기
cd ../oneserver
vim main.tf
tf fmt
vim main.tf
tf init
tf plan
vim main.tf
tf apply -auto-approve
cat terraform.tfstate
vim main.tf
1 terraform {
2 # 테라폼 버전 지정
3 required_version = ">=1.0.0, <2.0.0"
4
5 # 공급자 버전 지정
6 required_providers {
7 aws = {
8 source = "hashicorp/aws"
9 version = "~> 4.0"
10 }
11 }
12 }
13
14 provider "aws" {
15 region = "ap-northeast-2"
16 }
17
18 resource "aws_instance" "example" {
19 ami = "ami-0ab04b3ccbadfae1f"
20 instance_type = "t2.micro"
21
22 tags = {
23 Name = "aws08-example"
24 }
25 }
==========================
■ 웹 서버 만들기
cd ../one-webserver
cp ../one-server/main.tf .
vim main.tf
22 user_data = <<-EOF
23 #!/bin/bash
24 echo "Hello, World" > index.html
25 nohup busybox httpd -f -p 8080 &
26 EOF
추가
tf init
tf apply -auto-approve
■ 퍼블릭주소 넣는법
33 # Public IP Output
34 output "public-ip" {
35 value = aws_instance.example.public_ip
36 description = "The public IP of the Instance"
37 }
tf apply
yes
■ 8080포트
34 # 보안그룹 설정 8080포트 Open
35 resource "aws_security_group" "instance" {
36 name = "aws08-terraform-example-instance"
37
38 ingress {
39 from_port = 8080
40 to_port = 8080
41 protocol = "tcp"
42 cidr_blocks = ["0.0.0.0/0"]
43
44 }
45 }
21 vpc_security_group_ids = [aws_security_group.instance.id] //리소스에 넣어줘야됨
■ 변수지정
cd 01-terraform
mkdir syntax
vim main.tf
1 provider "local" {
2 }
3
4 variable "number" {
5 description = "An example of a variable in Terraform"
6 type = number
7 default = 42
8 }
9
10 output "number_example" {
11 value = var.number
12 }
13
:e variable.tf
vim output.tf
1 output "number_example" {
2 value = var.number
3 }
:w
:e main.tf
output,variable지우고 저장