AWS CloudFormation에서 인프라를 구축해 보았습니다.
12793 단어 CloudFormationAWS
그 배운 것 중에서도 AWS CloudFormation이 앞으로 다양한 도움이 될 것 같아서,
비망록적인 느낌으로 남기고 싶습니다.
AWS CloudFormation이란?
AWS 리소스를 모델링하고 설정하는 데 도움이 되는 서비스입니다.
자세한 내용은 공식을 참조하십시오.
htps : // / cs. 아 ws. 아마존. 이 m / 그럼 _ jp / 아 WSC ぉ う ふぉ r 마치 온 / ㄱ st / うせ r ぐ で / うぇ 1 め. HTML
AWS에서 구축한 인프라를 코드로 남길 수 있을 뿐만 아니라,
그 코드를 바탕으로 다시 환경을 구축할 수 있으므로 복제하거나 관리하는 것이 간단해집니다.
AWS CloudFormation을 사용하여 인프라 구축
인프라 환경을 코드로 떨어뜨리려면 JSON 또는 YAML 형식의 파일을 준비합니다.
이번은 인터넷에 접속하는 것을 상정한 가상 서버의 환경을 YAML 형식으로 구축해 보고 싶습니다.
사용할 리소스는 EC2 인스턴스가 됩니다.
시작하기 전에 VPC 주변을 설정하고 마지막으로 EC2를 설정합니다.
VPC 등의 용어에 대한 설명은 공식을 참조하십시오.
htps : // / cs. 아 ws. 아마존. 이 m / 그럼 _ jp / vpc / ㅁ st / 우세 r 굿이 / ぁ t - s - 아마 존 - vpc. HTML
CloudFormation.yaml
AWSTemplateFormatVersion: '2010-09-09'
Parameters:
EC2KeyName:
Type: AWS::EC2::KeyPair::KeyName
Description: SSH public key
Default: MyKey
Resources:
# -------------------------
# VPC
# -------------------------
VPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.100.0.0/16
EnableDnsSupport: true
EnableDnsHostnames: true
InstanceTenancy: default
Tags:
- Key: Name
Value: VPC
GatewayAttachment:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
InternetGatewayId: !Ref InternetGW
VpcId: !Ref VPC
# -------------------------
# Route
# -------------------------
RouteTable:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref VPC
Tags:
- Key: Name
Value: RouteTable
Route:
Type: AWS::EC2::Route
Properties:
RouteTableId: !Ref RouteTable
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref InternetGW
# ---------------------------
# RouteTable Associate
# ---------------------------
PubSubnetRouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref PubSubnet
RouteTableId: !Ref RouteTable
# ---------------------------
# Security Group
# ---------------------------
SecGrpEC2:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Web Server Rule
VpcId: !Ref VPC
Tags:
- Key: Name
Value: EC2-Sec
SecurityGroupIngress:
- { IpProtocol: tcp, FromPort: 80, ToPort: 80, CidrIp: 0.0.0.0/0 }
- { IpProtocol: tcp, FromPort: 22, ToPort: 22, CidrIp: 255.255.255.254/32, Description: MyIP}
# ---------------------------
# Subnet
# ---------------------------
PubSubnet:
Type: AWS::EC2::Subnet
Properties:
CidrBlock: 10.100.1.0/24
VpcId: !Ref VPC
MapPublicIpOnLaunch: True
AvailabilityZone: ap-northeast-1a
Tags:
- Key: Name
Value: PubSubnet
# ---------------------------
# InternetGW
# ---------------------------
InternetGW:
Type: AWS::EC2::InternetGateway
Properties:
Tags:
- Key: Name
Value: InternetGW
# ---------------------------
# EC2 instance
# ---------------------------
EC2Instance:
Type: AWS::EC2::Instance
DeletionPolicy: Delete
Properties:
AvailabilityZone: ap-northeast-1a
ImageId: ami-068a6cefc24c301d2
InstanceType: t2.micro
KeyName: !Ref EC2KeyName
SubnetId: !Ref PubSubnet
BlockDeviceMappings:
- DeviceName: /dev/sdb
Ebs:
VolumeSize: 20
VolumeType: gp2
SecurityGroupIds:
- !Ref SecGrpEC2
UserData:
Fn::Base64: |-
#!/bin/bash
yum -y update
yum install -y httpd
systemctl start httpd.service
yum install -y docker
service docker start
usermod -a -G docker ec2-user
curl -L "https://github.com/docker/compose/releases/download/1.9.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
Tags:
- Key: Name
Value: EC2Instance
※AMI에 대해서는 AWS측에서 준비되어 있는 것이 됩니다.
이상의 설정으로 인터넷에 접속 가능한 EC2 인스턴스를 구축할 수 있었습니다.
실제로 URL에서 전환하면 Apache 화면이 표시됩니다.
또한 CloudFormation의 디자이너 기능으로 이번에 구축한 환경을 확인할 수도 있습니다.
CloudFormation에서는 EC2 인스턴스를 만들 때 실행할 명령을
사용자 데이터로 설정할 수 있습니다.
이번에는 EC2 인스턴스를 세울 때 Docker를 넣도록 설정하고 있습니다.
또한 DeletionPolicy : Delete를 클릭하여
CloudFormation에서는 구축한 파일을 삭제했을 때 사용한 모든 리소스를 삭제할 수 있기 때문에 리소스를 지우는 것을 잊어버린 과금을 막을 수 있다는 점에서도 편리하다고 느낍니다.
오리지널 페이지는 이쪽
Reference
이 문제에 관하여(AWS CloudFormation에서 인프라를 구축해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hassy_she/items/b16ab5c1fab5a1ed6ddd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)