Oracle甲骨文免费ARM架构VPS(VM.Standard.A1.Flex)自动抢购脚本代码分享

老刘测评在之前有分享过UCloud出品的ARM架构云服务器,价格便宜,具体见文章《UCloud ARM架构云服务器_上海1核1G内存1M带宽40G系统盘快杰Lite型云主机最低配置性能测评附购买教程》。Oracle甲骨文也有一款Oracle甲骨文,而且可以免费抢购,今天分享下甲骨文ARM架构VPS(VM.Standard.A1.Flex)自动抢购脚本代码,供大家参考。本教程转载于Jacob‘ Wiki。

简介

最近Oraclel的机器被撸爆了,导致小伙伴都开不到免费的机器,于是写个脚本,放到服务器自己抢,资源出来基本就能开到。此脚本,是利用Terraform调用API来执行任务,下面简单的说明一下。事件背景如下:

甲骨文在几天前在选配实列中提供了一个新的选项VM.Standard.A1.Flex。根据用户协议,可以自由分配 4个OCPU,24 GB 内存,最大200GB空间容量和4GB的带宽。新开出的免费机型配置不可思议地高,令人难以置信。据了解,该机型仅部分区域可开通。它不占用此前开出的2台免费服务器的配额。但是,因为抢购火爆,所以一机难求。如果你不用个脚本跑一跑估计很难抢到vps。

安装Terraform

放上官网地址自行安装:

  • https://www.terraform.io/downloads.html?spm=a2c4g.11186623.2.4.517716f2wcNY4f

Terraform环境初始化

cd /opt/
mkdir terraform-learning && cd terraform-learning
wget https://raw.githubusercontent.com/Jacob-god/Jacob-god.github.io/master/images/main.tf
terraform init

修改脚本中的变量值

用vi打开main.tf,修改如下值:

availability_domain=  #地区 NMOF:AP-TOKYO-1-AD-1
compartment_id=  # 账户租户ID
subnet_id=  # 子网络ID 
ssh_authorized_keys=  # SSH密钥
source_id=  #镜像ID  imageId

这些值,都可以在创建vps的页面,通过F12,调出控制台查看。如下图,在创建页面,点击创建之后,会有一个instances的请求,查看这个请求的Request Payload,里面会有我们需要用到值。

下载安装cli命令行管理工具

bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"

一路回车就好了,提示(Y/n)的时候,输入y,然后回车。结束使用下面命令查看安装是否成功:

oci -v

配置cli账号信息,添加API Key

oci setup config

执行完上面的命令之后,需要填入一些信息,其中用到的值,在上面步骤中已经取到了。user OCID和tenancy OCID在账户界面,分别点击用户和租户,在信息栏中有我们需要的ID。

设置完成的步骤如下:第4步这里是选择的你的账户区域,根据提示填入对应的编号就行。

接下来需要把公钥传到控制台,回到浏览器,同样进入用户界面查看:

这里就是填入刚刚生成的公钥,可以通过cat /root/.oci/oci_api_key_public.pem这条命了获取,把获取到的公钥,完整的粘贴上去,点击添加。接下来,验证密钥是否有效:

oci iam availability-domain list

正确返回的结果,证明添加密钥有效。

验证脚本

main.tf 完善好之后接下来就开始创建任务

terraform apply 

执行完上面命令之后,会提示输入yes:

到这里,脚本和API配置就结束了,可以看到API返回Error Message: Out of host capacity,提示主机容量不足,接下来,我们利用shell,不停的请求这个API接口,创建主机。

配合shell脚本,自动执行任务

vi terraform.sh

把如下代码复制进去:

#!/bin/bash

path='/opt/terraform-learning/'

cd $path &&
while true
do
    echo 'yes' | terraform apply
    sleep 1s
done

给Shell脚本赋予执行权限:

chmod +x terraform.sh

后台执行脚本

然后后台执行terraform.sh,或者通过screen创建任务窗口:

nohup ./terraform.sh >> terraform.log 2>&1  &

结束脚本

结束脚本只能通过kill杀死进程:

pkill terraform

注意事项

脚本执行之后,会一直调用API创建实例,可以通过甲骨文控制台的限制策略,限制一下资源,以免一直创建,方法如下:

登录甲骨文控制台

点击限额策略-创建策略,名称和说明随意填写,限额策略里面填如下代码:

set compute-core quota standard-a1-core-count to 8 in compartment xxx where request.region = ap-tokyo-1

这条策略的意思是,限制我用户xxx,在东京区域,只能创建最多8个cpu的资源,然后,在限制使用量这里,输入Cores for Standard.A1 based VM and BM Instances查询一下,可用数量,如下图就代表限制成功。