老刘测评在之前有分享过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查询一下,可用数量,如下图就代表限制成功。