はじめまして!Tamaです!
今回からレシピ記事を書いていきます!よろしくお願いいたします!
AWS CLIからのデプロイ
今回は一括デプロイサービスであるCroudFormationをAWS CLIでの構築と比較するため、まずはAWS CLIからVPCを作りその中にEC2インスタンスの立ち上げを行います。
AWS CLIの導入や使い方はこちらから
今回作成する環境は下の表になります。
OS | Amazon Linux AMI 2015.03.0 x86_64 HVM GP2 |
AMI | ami-cbf90ecb |
Instance Type | t2.micro |
Root Volume | 8GiB |
VPC IP Range | 10.0.0.0/16 |
Subnet IP Range | 10.0.0.0/24 |
SecurityGroup | SSH(port:22) source:0.0.0.0/0 |
New Key Pair | NO |
EC2インスタンスにSSHで接続し、コマンドを入力していきます。
1. VPCの作成
1 |
# aws ec2 create-vpc --cidr-block 10.0.0.0/16 |
[実行結果]
1 2 3 4 5 6 7 8 9 |
{ "Vpc": { "InstanceTenancy": "default", "State": "pending", "VpcId": "[VPC ID]", "CidrBlock": "10.0.0.0/16", "DhcpOptionsId": "XXXXXXXXXXXX" } } |
2. Subnetの作成
1 |
# aws ec2 create-subnet --vpc-id [VPC ID] --cidr-block 10.0.0.0/24 |
[実行結果]
1 2 3 4 5 6 7 8 9 10 |
{ "Subnet": { "VpcId": "[VPC ID]", "CidrBlock": "10.0.0.0/24", "State": "pending", "AvailabilityZone": "ap-northeast-1a", "SubnetId": "[SubnetID]", "AvailableIpAddressCount": 251 } } |
3. インターネットゲートウェイの作成
1 |
# aws ec2 create-internet-gateway |
[実行結果]
1 2 3 4 5 6 7 |
{ "InternetGateway": { "Tags": [], "InternetGatewayId": "[InternetGatewayID]", "Attachments": [] } } |
4. インターネットゲートウェイのアタッチ
1 |
# aws ec2 attach-internet-gateway --internet-gateway-id [InternetGatewayID] --vpc-id [VPC ID] |
5. ルートテーブルの作成
1 |
# aws ec2 create-route-table --vpc-id [VPC ID] |
[実行結果]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
{ "RouteTable": { "Associations": [], "RouteTableId": "[RootTableID]", "VpcId": "[VPC ID]", "PropagatingVgws": [], "Tags": [], "Routes": [ { "GatewayId": "local", "DestinationCidrBlock": "10.0.0.0/16", "State": "active", "Origin": "CreateRouteTable" } ] } } |
6. ルートの設定
1 |
# aws ec2 create-route --route-table-id [RootTableID] --destination-cidr-block 0.0.0.0/0 --gateway-id [InternetGatewayID] |
[実行結果]
1 2 3 |
{ "Return": true } |
7. ルートテーブルの割り当て
1 |
# aws ec2 associate-route-table --subnet-id [SubnetID] --route-table-id [RootTableID] |
[実行結果]
1 2 3 |
{ "AssociationId": "[AssociationID]" } |
8. セキュリティグループの作成
1 |
# aws ec2 create-security-group --group-name EC2inVPC --description EC2inVPC --vpc-id [VPC ID] |
[実行結果]
1 2 3 |
{ "GroupId": "[GroupID]" } |
9. インバウンドルールの設定
1 |
# aws ec2 authorize-security-group-ingress --group-id [GroupID] --protocol tcp --port 22 --cidr 0.0.0.0/0 |
10. EC2インスタンスの立ち上げ
1 |
# aws ec2 run-instances --image-id ami-cbf90ecb --key-name [KeyName] --security-group-ids [GroupID] --instance-type t2.micro --block-device-mappings "[{\"DeviceName\":\"/dev/xvda\",\"Ebs\":{\"VolumeSize\":8}}]" --subnet-id [SubnetID] --count 1 --associate-public-ip-address |
[実行結果]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
{ "OwnerId": "XXXXXXXXX", "ReservationId": "XXXXXXXXX", "Groups": [], "Instances": [ { "Monitoring": { "State": "disabled" }, "PublicDnsName": "", "RootDeviceType": "ebs", "State": { "Code": 0, "Name": "pending" }, "EbsOptimized": false, "LaunchTime": "2015-XX-XXTXX:XX:XX.000Z", "PrivateIpAddress": "10.0.0.138", "ProductCodes": [], "VpcId": "[VPC ID]", "StateTransitionReason": "", "InstanceId": "[InstanceID]", "ImageId": "ami-cbf90ecb", "PrivateDnsName": "ip-10-0-0-138.ap-northeast-1.compute.internal", "KeyName": "[KeyName]", "SecurityGroups": [ { "GroupName": "EC2inVPC", "GroupId": "[GroupID]" } ], "ClientToken": "", "SubnetId": "[SubnetID]", "InstanceType": "t2.micro", "NetworkInterfaces": [ { "Status": "in-use", "MacAddress": "XX:XX:XX:XX:XX:XX", "SourceDestCheck": true, "VpcId": "[VPC ID]", "Description": "", "NetworkInterfaceId": "XXXXXXXXXX", "PrivateIpAddresses": [ { "Primary": true, "PrivateIpAddress": "10.0.0.138" } ], "Attachment": { "Status": "attaching", "DeviceIndex": 0, "DeleteOnTermination": true, "AttachmentId": "XXXXXXXXXXX", "AttachTime": "2015-XX-XXTXX:XX:XX.000Z" }, "Groups": [ { "GroupName": "EC2inVPC", "GroupId": "[GroupID]" } ], "SubnetId": "[SubnetID]", "OwnerId": "XXXXXXXXXXXX", "PrivateIpAddress": "10.0.0.138" } ], "SourceDestCheck": true, "Placement": { "Tenancy": "default", "GroupName": "", "AvailabilityZone": "ap-northeast-1a" }, "Hypervisor": "xen", "BlockDeviceMappings": [], "Architecture": "x86_64", "StateReason": { "Message": "pending", "Code": "pending" }, "RootDeviceName": "/dev/xvda", "VirtualizationType": "hvm", "AmiLaunchIndex": 0 } ] } |
コンソールからデプロイされたインスタンスを見てみます。
今回作成したVPC, Subnet内にデプロイされているのが確認できます。
AWS CLIでのVPCへのEC2インスタンスの立ち上げは以上になります!
お疲れさまでした!
CLIではコンソール以上に細かな設定が行えて便利ですね。
次回は同じ構成をCloudFormationで作成します!
またお会いしましょう!