通過阿里雲命令列工具 aliyuncli 購買伺服器

dudu發表於2018-04-22

開始想通過 aliyuncli 的 golang 原始碼進行編譯安裝(注:python 版的 aliyuncli 已不再維護),但沒成功,詳見 通過 golang 原始碼編譯阿里雲命令列工具 aliyuncli 出錯 

後來改為直接下載編譯好的 aliyuncli

wget -qO- http://aliyun-cli.oss-cn-hangzhou.aliyuncs.com/aliyun-cli-linux-3.0.0-amd64.tgz | tar xvz -C /usr/local/bin

使用前通過 aliyun configure 命令配置 access key

# aliyun configure
Configuring profile '' in '' authenticate mode...
Access Key Id []: xxx
Access Key Secret []: yyy
Default Region Id []: cn-hangzhou
Default Output Format [json]: json (Only support json))
Default Language [zh|en] en: 
Saving profile[] ...Done.

啟用自動補全

echo 'complete -C /usr/local/bin/aliyun aliyun' >> .bash_profile

然後使用下面的命令購買按量付費的伺服器

aliyun ecs CreateInstance \
  --RegionId cn-hangzhou(地域) \
  --ZoneId cn-hangzhou-b(可用區) \
  --InstanceChargeType PostPaid(按量付費) \
  --IoOptimized optimized(IO優化) \
  --InstanceType ecs.n4.xlarge(例項規格) \
  --ImageId m-xxx(映象ID) \
  --VSwitchId vsw-xxx(VPC交換機ID) \
  --InternetChargeType PayByTraffic(公網按使用流量計費) \
  --InternetMaxBandwidthOut 1(公網最大頻寬) \
  --SecurityGroupId sg-xxx(安全組ID) \
  --HostName webserver-temp(主機名) \
  --InstanceName webserver-temp(例項名稱) 

執行上面的命令可以完成購買,但目前存在的問題:

1)雖然指定了 InternetChargeType 與 InternetMaxBandwidthOut ,但建立的伺服器沒有分配公網 IP

2)伺服器建立後處於停止狀態,不能自動啟動

3)缺少知道釋放時間的引數

。。。

後來知道了:

1)分配公網IP需要執行 aliyun ecs AllocatePublicIpAddress 命令

2)啟動伺服器需要執行 aliyun ecs StartInstance 命令

3)設定自動釋放時間需要執行 aliyun ecs ModifyInstanceAutoReleaseTime 命令

改進後的 shell 指令碼如下

Result=`aliyun ecs CreateInstance \
  --RegionId cn-hangzhou(地域) \
  --ZoneId cn-hangzhou-b(可用區) \
  --InstanceChargeType PostPaid(按量付費) \
  --IoOptimized optimized(IO優化) \
  --InstanceType ecs.n4.xlarge(例項規格) \
  --ImageId m-xxx(映象ID) \
  --VSwitchId vsw-xxx(VPC交換機ID) \
  --InternetChargeType PayByTraffic(公網按使用流量計費) \
  --InternetMaxBandwidthOut 1(公網最大頻寬) \
  --SecurityGroupId sg-xxx(安全組ID) \
  --HostName webserver-temp(主機名) \
  --InstanceName webserver-temp(例項名稱)`
InstanceId=`echo "$Result" | grep -Po "(i-[^\"]+)"`
sleep 30s
aliyun ecs AllocatePublicIpAddress --InstanceId $InstanceId
aliyun ecs StartInstance --InstanceId $InstanceId
aliyun ecs ModifyInstanceAutoReleaseTime --InstanceId $InstanceId --AutoReleaseTime $1

實測有效。

相關文章