BE전문가 프로젝트

5. AWS CloudFormation을 사용한 인프라 배포 자동화 본문

AWS 실습

5. AWS CloudFormation을 사용한 인프라 배포 자동화

원호보고서 2021. 12. 16. 11:46

- 인프라배포를 자동으로 해주기 때문에 보다 안정적인 방법이라고 할 수 있다.

AWS CloudFormation을 사용하여 네트워킹 계층 배포
AWS CloudFormation을 사용하여 네트워킹 계층을 참조하는 애플리케이션 계층 배포
AWS CloudFormation을 사용하여 스택의 리소스 업데이트
AWS CloudFormation Designer를 사용하여 템플릿 살펴보기
삭제정책이 있는 AWS CloudFormation 스택 삭제

 

네크워킹 계층 배포

1. lab-networkd.yaml을 다운로드한다

- AWS CloudFormation 템플릿은 json, yaml로 작성할 수 있다.

 

2. CloudFormation을 클릭 후 Create stack을 클릭 후 with new resources(standard)를 클릭한다.

 

3.1 템플릿 지정 

 Temlplate Source : Upload a template file을 선택 후 choose file에서 방금 다운받은 ymal파일을 업로드한다.

 

3.2 스택 세부정보 지정

stack name : lab-network

next

 

3.3 스택 옵션 구성

key : application

value : inventory

next

 

3.4 검토

Create stack을 클릭한다.

- CloudFormation에서 이제 템플릿을 사용하여리소스의 스택을 생성한다.

 

4. Stack info 탭을 클릭한 후 Status가 초록불이 나올 때 까지 기다린다.

 

5. 정상적으로 생성이 됐다면 Resource탭을 클릭하여 리소스 목록들을 확인한다.

 

6. Event 탭을 클릭한 후 목록을 본다.

 

7. Output 탭을 클릭한 후 목록을 본다.

- CloudFormation 스택에서 지정된 리소스 ID 및 리소스 링크와 같은 출력 정보를 제공한다.

- 출력되는 정보

 

 

애플리케이션 계층 배포

- 네트워크 계층은 배포가 완료되었으므로 EC2 instance와 보안 그룹이 포함된 애플리케이션 계층을 배포한다.

 

1. Lab-application.yaml파일을 다운로드한다.

 

2. 왼쪽 탐색창에 Stack을 클릭 후 Create stcak을 클릭한 다음 with new resources(standard)을 클릭한다

 

3.1 템플릿 지정

- Temlplate Source : Upload a template file을 선택 후 choose file에서 방금 다운받은 ymal파일을 업로드한다.

 

3.2 스택 세부정보 지정

stack name : lab-application

NetworkStackName : lab-network

next

 

3.3 스택 옵션 구성

key : application

value : inventory

next

 

3.4 검토 후 Create를 누른다.

 

4. Stack info 탭을 클릭한 후 Status가 초록불이 나올 때 까지 기다린다.

 

5. Output 탭을 클릭한 후 표시된 URL을 복사하여 브라우저로 들어가본다.

 

lab-application의 일부

  WebServerSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Enable HTTP ingress
      VpcId:
        Fn::ImportValue:
          !Sub ${NetworkStackName}-VPCID

- 마지막줄은 스택 생성 시 NetworkStackName(lab-network를 나타낸다.

- lab-network-VPC ID값을 가져와 보안 그룹을 정의하는 VPC ID필드에 값을 삽입하여 VPC Security Group을 생성한다.

 

 

스택 업데이트

- 배포되어있던 스택을 업데이트할 수 있으며 변경되는 리소스만 수정 또는 대체한다.

- 이번에는 보안 그룹만 수정하는 작업이다.

 

1. EC2를 클릭하고 Security Groups를 클릭한다.

 

2. 생성되어있는 Web Server Security Group을 선택 후 inbound rules 탭을 클릭한다.

- 현재 HTTP트래픽만 허용하는 규칙만 적용되어있음

 

3. 확인 후 Cloud Formation을 클릭한다.

 

4. 새롭게 업데이트할 Lab-application2.yaml 템플릿을 다운로드한다.

 

-Lab-application2.yaml

  - IpProtocol: tcp
    FromPort: 22
    ToPort: 22
    CidrIp: 0.0.0.0/0

 

5. lab-application 스택이름을 클릭한 다음 update를 누른다.

- replace current template을 선택 한다

- Upload a template file을 선택한다.

- choose file에서 방금 다운받은 Lab-application2.yaml을 선택한다.

 

6. next를 3회 클릭 후 review가 나오는 것을 확인한다.

- changes에 변경사항을 확인한다.

 

7. Stack info 탭을 클릭한 후 Status가 초록불이 나올 때 까지 기다린다.

 

8. EC2로 돌아가 Security Group에 변경한 것들이 잘 적용되었는지 확인한다.

 

 

AWS CloudFormation Designer를 사용하여 템플릿 살펴보기

-AWS CloudFormation Designer는 템플릿을 작성, 확인, 수정하기위한 그래픽 도구이며 다이어그램을 통해 편집이 가능하다.

 

1. Cloud Formation을 클릭 후 왼쪽 Designer를 클릭한다.

 

 

스택 삭제

- 리소스가 더이상 필요하지 않다면 리소스를 삭제할 수 있다.

- 리소스에 대한 삭제 정책을 지정할 수 있으며 삭제 시 경우에 따라 보존 또는 백업이 가능하다.

- lab-application.yaml에 EBS 디스크 볼륨이 삭제되기전 스냅샷을 생성하도록 구성하였기에 삭제시에 스냅샷이 자동으로 만들어진다.

  DiskVolume:
    Type: AWS::EC2::Volume
    Properties:
      Size: 100
      AvailabilityZone: !GetAtt WebServerInstance.AvailabilityZone
      Tags:
        - Key: Name
          Value: Web Data
    DeletionPolicy: Snapshot

1. stack에 들어가 lab-application을 삭제한다.

- Application 스택을 삭제되었지만 네트워크 스택은 그대로 유지되는 것을 확인할 수 있으며 이를 통해 여러가지 여러 팀이 자체 스택을 강화할 수 있는 아이디어를 강화한다.

 

2. EC2에 들어가 EBS의 볼륨의 스냅샷이 생성되어있는지 확인하자

 

3. EC2클릭 후 왼쪽 탐색창에 Snapshot을 클릭한다.

 

4. 몇분 지난 후 Started 시간이 표시된 스냅샷이 보일 것이다

Comments