Task 11 S3생성
Info
- Terraform VPC + S3 + EC2 Example
1) S3
- S3 Bucket 생성
- Bucket 생성 후 Sample 이미지 업로드 및 Public 설정
2) VPC
- VPC CIDR 은 10.0.0.0/16
- Subnet CIDR 은 10.X.0.0/24
- Subnet 은 본인이 선택한 Region의 Availability Zone 수만큼 생성 (ex. us-east-1 -> 4 Availability Zones -> 4 Subnets)
- 각 Availability Zone 별로 Public Subnet, Private Subnet 페어로 한 개씩 존재하도록 생성
- Internet Gateway 생성 후 VPC에 Attach
- Route Table 은 Public 과 Private Route Table 한 개씩 총 2개 생성
- Public Route Table 은 Internet Gateway 로 통신 가능하도록 Route 추가 후 Public Subnet 4개와 연결 (Associatation)
- Private Route Table 은 Route 추가 없이 Private Subnet 4개와 연결 (Associatation)
- NAT Gateway 용 EIP 생성
- Public Subnet에 NAT Gateway 생성
- Private Route Table에 외부 통신을 위해서 NAT Gateway 로 통신 가능하도록 Route 추가
- SSH 허용을 위한 Admin 용 Security Group 과 HTTP 웹 접속 허용을 위한 Web Security Group 총 두개의 Security Group 생성
- Admin Security Group 에는 SSH(20) 포트를 본인 Cloud9 Public IP 허용하는 Rule 생성
- Web Security Group 에는 HTTP(80) 포트를 모두 허용하는 Rule 생성
- 각 Resource 를 생성하는 코드를 모두 Module 로 제작
3) EC2
- 각 EC2 Instance 생성 후, User data 를 통해 Nginx 웹서버 설치 및 index.html 테스트 웹 파일 생성
- index.html에 태그로 S3의 이미지 URL 추가
1) S3 실습을 진행하기 위해서 10-s3폴더로 경로 이동
- cd ../10-s3/
- 해당 실습은10-s3 폴더 밑에 있는 01-s3, 02-ec2 폴더의 Terraform 코드를 두 번 실행
- 01-s3 : S3 Bucket 생성 모듈 포함
- 02-ec2: VPC 생성 및 네트워크 설정 EC2 배포 모듈 포함
- 10-s3 폴더 하위에 01-s3 경로로 이동
- cd 01-s3/
2) 01-s3 폴더 하위 파일인 s3.tfvars 파일 실행
변수설정
- s3.tfvars 파일 확인 실행 환경에 맞게 변경
- # s3.tfvars 파일 prefix = "user**" region = "ap-northeast-2"
- Prefix는 알맞게 변경
- Region 은 본인이 사용할 region 코드로 변경
3) Init 명령으로 Terraform 수행을 위한 provider plugin 초기화 및 다운로드 수행
- terraform init
4) Plan 명령으로 Terraform 수행 전 실행 시뮬레이션 확인
- terraform plan --var-file=s3.tfvars
5) Apply 명령으로 Terraform을 통한 Resource 생성 수행
- terraform apply --var-file=s3.tfvars
6) 실행 내용 확인
- S3 버킷이 생성되면 AWS 콘솔 S3로 이동해서 버킷에 이미지 업로드 수행
업로드 된 이미지의 권한 편집 -> 모든 사람(퍼블릭 액세스) 객체 읽기로 변경 후 저장
업로드 된 이미지 객체 URL 복사
7) 02-ec2 경로로 이동
cd ../02-ec2/
8) 02-ec2 폴더 하위 파일인 vpc.tfvars 파일 실행
변수설정
# vpc.tfvars 파일
prefix = "user**"
region = "ap-northeast-2"
vpc_cidr = "10.0.0.0/16"
public_subnets = [
{cidr = "10.0.1.0/24", availability_zone = "ap-northeast-2a"},
{cidr = "10.0.3.0/24", availability_zone = "ap-northeast-2c"},
]
private_subnets = [
{cidr = "10.0.11.0/24", availability_zone = "ap-northeast-2a"},
{cidr = "10.0.13.0/24", availability_zone = "ap-northeast-2c"},
]
admin_access_cidrs = ["<<YOUR_LOCAL_IP_CIDR>>"]
instance_type = "t3.micro"
keypair_name = "<<YOUR_KEYPAIR_NAME>>"
img_url = "<<S3_SAMPLE_IMAGE_URL>>"
* Prefix 는 알맞게 변경
* Region 은 본인이 사용할 region 코드로 변경
* Subnet 의 Availability Zone 값은 Region 에 맞게 변경
* SSH 접속 허용할 IP 값 변경
* Ec2 instance 에 설정할 keypair 명 설정
* Image URL 에는 S3에 업로드하였던 이미지 객체 URL 입력
9) Init 명령으로 Terraform 수행을 위한 provider plugin 초기화 및 다운로드 수행
- terraform init
10) Plan 명령으로 Terraform 수행 전 실행 시뮬레이션 확인
- terraform plan --var-file=vpc.tfvars
11) Apply 명령으로 Terraform을 통한 Resource 생성 수행
- terraform apply --var-file=vpc.tfvars
12) Terraform 실행 내용 확인
선택한 Region에 VPC, Subnet, Internet Gateway, Route Table, NAT Gateway, Security Group, instance 생성 내용 확인
생성된 Instance에 웹서버 설치 확인. Instance의 Public IP(또는 Public DNS) 로 브라우저에서 테스트 페이지 접속 확인.
테스트 페이지에서 S3에 업로드 된 Image 가 정상적으로 보이는지 확인
13) Resource 삭제
- Terraform destroy
- Destroy 명령으로 생성된 VPC 및 EC2 삭제, S3 삭제
- terraform destroy --var-file=vpc.tfvars
- S3 콘솔로 이동해서 객체 삭제
- 01-s3 경로로 이동 후 S3 삭제
- terraform destroy --var-file=s3.tfvars
14) 폴더 삭제
- Cloud9 왼쪽 메뉴에 10-S3폴더 우 클릭 후 Delete
Last updated