Alibaba Cloud CLI で ECS を作成
こんにちは。
ネクストスケープの開發(@mamikaihatsu)です。
今回は、実際に Alibaba Cloud CLI で簡単なWEBサーバを構築する事を想定して作成します。
ECSを作成するには、配置場所である仮想ネットワークはもちろんの事ですが
仮想スイッチ、セキュリティグループ、パブリックIPが必要になります。
これらに該当する Alibaba Cloud のプロダクトも含めて、下記を順に作成します。
- VPC(仮想ネットワーク)
- VSwitch(仮想スイッチ)
- Security Group(セキュリティグループ)
- ECS(仮想マシン)
- EIP(パブリックIP)
まずは基礎から学びたい方は、先に以下の過去記事をご参考にしてください。
Alibaba Cloud CLIをインストールして動かしてみた
これだけは覚えておきたい Alibaba Cloud CLI の基本的な使い方
Alibaba Cloud CLI で ID確認
では、作成していきましょう。
各インスタンスの作成については、コマンド、パラメーターの一覧、作成後の返り値をそれぞれ記載致します。
VCPの作成
$ aliyun vpc CreateVpc --RegionId ap-northeast-1 --CidrBlock 10.0.0.0/8 --VpcName sample-vpc
CidrBlockを指定しなかった場合は、デフォルト値である 172.16.0.0/12 になります。
Parameters:
--RegionId String Required
--CidrBlock String Optional
--ClientToken String Optional
--Description String Optional
--EnableIpv6 Boolean Optional
--Ipv6CidrBlock String Optional
--ResourceGroupId String Optional
--UserCidr String Optional
--VpcName String Optional
返り値:
{"RequestId":"xxxx-xxxx-xxxx-xxxx-xxxx","ResourceGroupId":"rg-xxxx","RouteTableId":"vtb-xxxx","VpcId":"vpc-xxxx","VRouterId":"vrt-xxxx"}
作成されたVCPのIDである「VpcId」が発行されます。
また、今回は触れませんが、RouteTableが自動で作成されます。
VSwitchの作成
$ aliyun ecs CreateVSwitch --VpcId vpc-xxxx --ZoneId ap-northeast-1a --CidrBlock 10.0.0.0/24 --VSwitchName sample-vsw
Parameters:
--CidrBlock String Required
--VpcId String Required
--ZoneId String Required
--ClientToken String Optional
--Description String Optional
--RegionId String Optional
--VSwitchName String Optional
返り値:
{"RequestId":"xxxx-xxxx-xxxx-xxxx-xxxx","VSwitchId":"vsw-xxxx"}
作成されたVSwitchのIDである「VSwitchId」が発行されます。
Security Groupの作成
$ aliyun ecs CreateSecurityGroup --RegionId=ap-northeast-1 --VpcId vpc-xxxx --SecurityGroupName sample-sg
Parameters:
--RegionId String Required
--ClientToken String Optional
--Description String Optional
--ResourceGroupId String Optional
--SecurityGroupName String Optional
--Tag.n.Key String Optional
--Tag.n.Value String Optional
--Tag.n.key String Optional
--Tag.n.value String Optional
--VpcId String Optional
返り値:
{"SecurityGroupId":"sg-xxxx","RequestId":"xxxx-xxxx-xxxx-xxxx-xxxx"}
作成されたSecurityGroupのIDである「SecurityGroupId」が発行されます。
Security Groupに受信ルール追加
Webサーバとして利用するので80番ポートを開いておきます。
後は必要に応じてHTTPS(443),社内IPなど特定のIPで制限をかけてWindowsはRDP(3389)、Linuxの場合はSSH(22)などルールを追加してください。
$ aliyun ecs AuthorizeSecurityGroup --SecurityGroupId=sg-xxxx --SourceCidrIp=0.0.0.0/0 --IpProtocol=tcp --PortRange=80/80 --NicType=intranet --Policy=accept
Parameters:
--IpProtocol String Required
--PortRange String Required
--RegionId String Required
--SecurityGroupId String Required
--ClientToken String Optional
--Description String Optional
--DestCidrIp String Optional
--Ipv6DestCidrIp String Optional
--Ipv6SourceCidrIp String Optional
--NicType String Optional
--Policy String Optional
--Priority String Optional
--SourceCidrIp String Optional
--SourceGroupId String Optional
--SourceGroupOwnerAccount String Optional
--SourceGroupOwnerId Long Optional
--SourcePortRange String Optional
返り値:
{"RequestId":"xxxx-xxxx-xxxx-xxxx-xxxx"}
ECSの作成
今回、課金タイプ(InstanceChargeType)は従量課金(PostPaid)で、インスタンスタイプ(InstanceType)は汎用タイプファミリ(ecs.n4.large)のイメージ(ImageId)は Windows Server 2016 日本語版で作成します。
ImageIdやInstanceTypeの種類を確認したい場合は、コチラの記事をご参考にしてください。
$ aliyun ecs CreateInstance --RegionId ap-northeast-1 --ZoneId ap-northeast-1a --ImageId win2016_64_dtc_1607_ja-jp_40G_alibase_20181220.vhd --VSwitchId vsw-xxxx --PrivateIpAddress 10.0.0.10 --InstanceType ecs.n4.large --SecurityGroupId sg-xxxx --InstanceChargeType PostPaid --InstanceName sample-ecs
Parameters:
--ImageId String Required
--InstanceType String Required
--RegionId String Required
--AutoRenew Boolean Optional
--AutoRenewPeriod Integer Optional
--ClientToken String Optional
--ClusterId String Optional
--CreditSpecification String Optional
--DataDisk.n.Category String Optional
--DataDisk.n.DeleteWithInstance Boolean Optional
--DataDisk.n.Description String Optional
--DataDisk.n.Device String Optional
--DataDisk.n.DiskName String Optional
--DataDisk.n.Encrypted Boolean Optional
--DataDisk.n.Size Integer Optional
--DataDisk.n.SnapshotId String Optional
--DedicatedHostId String Optional
--DeletionProtection Boolean Optional
--DeploymentSetId String Optional
--Description String Optional
--DryRun Boolean Optional
--HostName String Optional
--HpcClusterId String Optional
--InnerIpAddress String Optional
--InstanceChargeType String Optional
--InstanceName String Optional
--InternetChargeType String Optional
--InternetMaxBandwidthIn Integer Optional
--InternetMaxBandwidthOut Integer Optional
--IoOptimized String Optional
--KeyPairName String Optional
--NodeControllerId String Optional
--Password String Optional
--PasswordInherit Boolean Optional
--Period Integer Optional
--PeriodUnit String Optional
--PrivateIpAddress String Optional
--RamRoleName String Optional
--ResourceGroupId String Optional
--SecurityEnhancementStrategy String Optional
--SecurityGroupId String Optional
--SpotInterruptionBehavior String Optional
--SpotPriceLimit Float Optional
--SpotStrategy String Optional
--SystemDisk.Category String Optional
--SystemDisk.Description String Optional
--SystemDisk.DiskName String Optional
--SystemDisk.Size Integer Optional
--Tag.n.Key String Optional
--Tag.n.Value String Optional
--Tag.n.key String Optional
--Tag.n.value String Optional
--UseAdditionalService Boolean Optional
--UserData String Optional
--VSwitchId String Optional
--VlanId String Optional
--ZoneId String Optional
返り値:
{"InstanceId":"i-xxxx","RequestId":"xxxx-xxxx-xxxx-xxxx-xxxx"}
作成されたECSインスタンスのIDである「InstanceId」が発行されます。
Elastic IPの作成
$ aliyun vpc AllocateEipAddress --RegionId ap-northeast-1 --Bandwidth 10 --InternetChargeType PayByTraffic --InstanceChargeType PostPaid
Parameters:
--RegionId String Required
--AutoPay Boolean Optional
--Bandwidth String Optional
--ClientToken String Optional
--ISP String Optional
--InstanceChargeType String Optional
--InternetChargeType String Optional
--Netmode String Optional
--Period Integer Optional
--PricingCycle String Optional
--ResourceGroupId String Optional
返り値:
{"ResourceGroupId":"rg-xxxx","RequestId":"xxxx-xxxx-xxxx-xxxx-xxxx","EipAddress":"xx.xx.xx.xx","AllocationId":"eip-xxxx"}
作成されたEIPのIDである「AllocationId」と、パブリックIPのアドレス「EipAddress」が発行されます。
作成しただけではまだECSに繋がらないので、次にEIPをECSにバインドさせます。
EIPをECSへバインド
$ aliyun vpc AssociateEipAddress --AllocationId eip-xxxx --InstanceId i-xxxx
返り値:
{"RequestId":"xxxx-xxxx-xxxx-xxxx-xxxx"}
これで作成自体は完了です。
今の状態では、まだECSは停止しているので起動させます。
ECSを起動
$ aliyun ecs StartInstance --InstanceId i-xxxx
WEBサーバですので後は、IISやApacheなどのWebサーバソフトウェアをインストールして設定等するだけですね。
まとめ
確認も兼ねて1つ1つコマンドを作成しましたが、何度も同じ構成を作成する場合は
変数に入れるなどまとめてしまった方がとても楽に作成できます。