您好,欢迎访问本站!登录后台查看权限

转:使用API自动化部署Oracle服务器

教程 俎天润 2020-03-24 11160 次浏览 1个评论

去年甲骨文云服务器开放注册,每个开发者均能永久免费使用2个1c1g的VPS、数据库及其他服务,看到这个消息马上注册了一个,并选择了韩国作为主地区,以后创立的免费服务器就在韩国了,对于电信、联通用户来说访问速度很快。由于韩国服务器很快被撸爆,创建就提示out of host capicity,那么有什么办法可以刷到服务器呢?看文档发现有api和oci-cli两种程序员友好的方式可以用来管理,因此就把使用oci命令行自动化创建服务器的过程记录下来,方便其他要使脚本创建机器的朋友。

环境不同,可能需要更换某些参数,本文以Centos为准

推荐使用谷歌浏览器打开邮件里面的链接。进入控制台,从下图所示位置进入20200324213011_55383-min.jpg

创建一个免费服务器,按F12打开控制台,点提交,在网络请求中找到instances并查看headers详情20200324213011_23287-min.jpg

找到如下信息并记录

availabilityDomain #跟地区相关,我是韩国

compartmentId # 账号相关

subnetId #子网络

shape #服务器类型,永久免费为VM.Standard.E2.1.Micro,可以不变

ssh_authorized_keys #这个是服务器的公钥文件

imageId #这是系统类型

另外需要用户ocid信息,首先进入用户页面20200324213012_31868-min.jpg

右上角点击进入查看tenancy ocid。

20200324213012_86653-min.jpg

用小本本记录下这些信息,后面要用。

1. 下载安装oci命令行管理工具

直接上命令

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

一路回车就好了,结束使用下面命令查看安装是否成功

oci -v

2. 配置cli账号信息,添加api key

oci setup config

20200324213012_48606-min.jpg

接下来需要把公共秘钥传到控制台,回到浏览器,同样进入用户界面查看
20200324213012_82443-min.jpg

添加好后就可以来看看oci命令行工具行不行了。

oci iam availability-domain list

20200324213012_61197-min.jpg

查看配置文件是否正确
20200324213013_31428-min.jpg

如果没有报错说明配置成功。

3. 使用cli命令自动化脚建立服务器

前面已经配置好了cli,这里就可以使用命令来尝试建立云计算服务器了。

oci compute instance launch --availability-domain JCbl:AP-SEOUL-1-AD-1 --display-name seoul1 --image-id ocid1.image.oc1.ap-seoul-1.aaaaaaaa4e3nhzytej7iwr4qh6aov3d5yxswfek7wzjyd2tpaqtlwt3kmqta --subnet-id ocid1.subnet.oc1.ap-seoul-1.aaaaaaaa...  --shape VM.Standard.E2.1.Micro --assign-public-ip true --metadata '{"ssh_authorized_keys": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+Sk1M9GX6AOoI1RtK33zaltsuSIGofdtI0sT9YqULEP0zSvrHPh8TEWY7XQdz1TbWcXLG7V0YNZgzUMEr6khI4zRygCU8N5OYX/M3VH36FddD0Jr6HiEkHTECVYdxxvJ7Lq8iCe5VP9IfomphjWTVZfml+jX0deR6gHY3MVblEnwLdhxT61aLOUe8Q1P3m6SWjukpSl9Wk/rf96YQIyw23+lWILWw9TkEhJOXwwV89nvlM11jN4fjh1yl1ax+yRl4BsMfRUrfT8CZ+OhR8qZILKPhsY8ehOZs8TbbWU8G55y/PJS8WjhhP3I0BpETazMZWuY41 zhang"}' --compartment-id ocid1.tenancy.oc1...

这里几个参数多是前面用小本本记录下来的信息

availability-domain #有记录

display-name #云服务器名称,随意,最好不要加这个参数,不然只能创建一个,第二个时名字一样了

image-id # 前面有记录,我这是centos7的

subnet-id #前面有记录

shape #永久免费就是这一款VM.Standard.E2.1.Micro

assign-public-ip true #是否需要公网ip,当然是true

metadata #这里就是添加了一个免登录秘钥,改成你自己的就行

compartment-id #前面有记录

运行命令,如果一会儿有输出就没问题了,接下来可以通过定时执行命令来创建云服务器20200324213013_94562-min.jpg

使用crontab定时,第二天再来查看是否创建成功。,首先把命令写成oci.sh的bash脚本

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
alias ic="ibmcloud"
export PATH=/root/bin:$PATH
[[ -e "/root/lib/oracle-cli/lib/python2.7/site-packages/oci_cli/bin/oci_autocomplete.sh" ]] && source "/root/lib/oracle-cli/lib/python2.7/site-packages/oci_cli/bin/oci_autocomplete.sh"
#如果你们的bash环境下直接下面这句没报错,只用这一句也是ok的
#上面这些主要是加入你们默认shell的内容,防止出现跟系统环境有关的错误
#可改为source /root/.bashrc,这里.bashrc为你们的默认shell
oci compute instance launch --availability-domain JCbl:AP-SEOUL-1-AD-1  --image-id ocid1.image.oc1.ap-seoul-1.aaaaaaaa4e3nhzytej7iwr4qh6aov3d5yxswfek7wzjyd2tpaqtlwt3kmqta --subnet-id ocid1.subnet.oc1.ap-seoul-1.aaaaaaaa...  --shape VM.Standard.E2.1.Micro --assign-public-ip true --metadata '{"ssh_authorized_keys": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+Sk1M9GX6AOoI1RtK33zaltsuSIGofdtI0sT9YqULEP0zSvrHPh8TEWY7XQdz1TbWcXLG7V0YNZgzUMEr6khI4zRygCU8N5OYX/M3VH36FddD0Jr6HiEkHTECVYdxxvJ7Lq8iCe5VP9IfomphjWTVZfml+jX0deR6gHY3MVblEnwLdhxT61aLOUe8Q1P3m6SWjukpSl9Wk/rf96YQIyw23+lWILWw9TkEhJOXwwV89nvlM11jN4fjh1yl1ax+yRl4BsMfRUrfT8CZ+OhR8qZILKPhsY8ehOZs8TbbWU8G55y/PJS8WjhhP3I0BpETazMZWuY41 zhang"}' --compartment-id ocid1.tenancy.oc1...

然后用定时任务每分钟请求部署一次

crontab -e
* * * * *  /bin/bash /root/oci.sh  >> /root/oracle.log   2>&1
#根据需要更改,我这是每分钟执行一次,多了会报错

要实时显示刷的信息,可以使用下面命令查看

tail -F /root/oracle.log

由于后面甲骨文把韩区机子取消了,会出现以下错误,请无视,机器补货后会自动刷到

ServiceError:{
    "code": "NotAuthorizedOrNotFound",    
    "message": "shape VM.Standard.E2.1.Micro not found",    
    "opc-request-id": "***6646B193854ED4671EE408/C804B0F793A70D6D32665B4262C4AF8F/CDB0E9ED6E992F4E989FBFF765B886A1",    
    "status": 404}

现在韩国区又重上了免费鸡,没有机器的时候出现500就对了。

总结

本文通过oci工具和rest api自动创建免费服务器,最后使用crontab定时任务来重复执行创建流程,达到可在热门地区创建免费服务器的目的,如有问题可联系博主,我尽量帮忙


已有 11160 位网友参与,快来吐槽:

1#访客  2022-10-08 08:41:29 回复该评论
博主,请教甲骨文机器如何通过api换ip,我需要做个自动检测奈飞解锁的脚本,卡在自动换ip这一步。我的tg联系方式 @snvpn

发表评论