oracle API脚本创建实例

oracle 使用 API 脚本创建实例

FinalShell

image.png

鼠标选中内容后

第一个图标:只复制

第二个图标:复制并且粘贴

安装oci-cli

参考:https://docs.cloud.oracle.com/iaas/Content/API/SDKDocs/cliinstall.htm

安装oci-cli

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@VM_0_12_centos ~]# bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"

## 一堆代码

===> Modify profile to update your $PATH and enable shell/tab completion now? (Y/n): y

## 一些提示
-- ** Run `exec -l $SHELL` to restart your shell. **
--
-- Installation successful.
-- Run the CLI with /root/bin/oci --help

## 按照提示使oci生效
[root@VM_0_12_centos ~]# exec -l $SHELL

## 查看oci是否生效
[root@VM_0_12_centos ~]# oci -v
2.6.9

oci-cli其他命令

1
2
3
4
5
## 升级oci-cli
pip install oci-cli --upgrade

## 卸载oci-cli
pip uninstall oci-cli

配置oci

用户和租户

用户OCID

  • 获得用户OCID:ocid1.user.oc1..aaaaaaaajrz7kqwo2tz5esslpdxc75nkfs4cbfwccq5xqt6ql2oinkh32e4a
  • 获得租户OCID:ocid1.tenancy.oc1..aaaaaaaavb77g5bgee2venclnxhonn3zjvb6xafodnx7uuya3edwq6fgd46a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
[root@VM_0_12_centos ~]# oci setup config

## 一堆代码
Enter a location for your config [/root/.oci/config]:

## 输入用户ID
Enter a user OCID: ocid1.user.oc1..aaaaaaaajrz7kqwo2tz5esslpdxc75nkfs4cbfwccq5xqt6ql2oinkh32e4a

## 输入租户ID
Enter a tenancy OCID: ocid1.tenancy.oc1..aaaaaaaavb77g5bgee2venclnxhonn3zjvb6xafodnx7uuya3edwq6fgd46a

## 输入区域,自然是韩国
Enter a region (e.g. ap-mumbai-1, ap-seoul-1, ap-sydney-1, ap-tokyo-1, ca-toronto-1, eu-frankfurt-1, eu-zurich-1, sa-saopaulo-1, uk-london-1, us-ashburn-1, us-gov-ashburn-1, us-gov-chicago-1, us-gov-phoenix-1, us-langley-1, us-luke-1, us-phoenix-1): ap-seoul-1

## 问是否生成密钥对,是,y
Do you want to generate a new RSA key pair? (If you decline you will be asked to supply the path to an existing key.) [Y/n]: y
Enter a directory for your keys to be created [/root/.oci]:
Enter a name for your key [oci_api_key]:

## 公钥路径
Public key written to: /root/.oci/oci_api_key_public.pem

## 问是否设置私钥密码,当然不要,默认回车
Enter a passphrase for your private key (empty for no passphrase):

## 私钥路径
Private key written to: /root/.oci/oci_api_key.pem

## 一堆代码

## 查看公钥
[root@VM_0_12_centos ~]# more /root/.oci/oci_api_key_public.pem
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzXqJQA8yhFaL4AshcHRM
cTRxore9suSn8gsM+N19AMx8rv1I538bPnMtZJgFKlyUwDlcpWbfVTwycJIPfwia
hvpUlS+On9nsxrP6FfS7qtqdc9BleUHAL9qAQgHFrRkt2B4WESvrmIeNb08I6L74
xggWQXFnU9N4LZh4hQIN+dk/Nso6Y8sGEqW4XmUNFtmUrHLSY/tmxBcOLEn2fMV8
8KAR38h8TZD4qvGpqnIIaIf3Nip0+wv3km0KVlLs5rrWaZl142fZd/AvS0uY708n
JuKS/Jizd8OcEstqOg0KJnfYQwRSJnZtoCWlDGgJ+WInk2Lr6zIr9FWdwNx5/uQv
QwIDAQAB
-----END PUBLIC KEY-----

用户界面:添加API密钥

image.png

密钥内容就是前面的公钥字符串

image.png

获取请求信息

请求参数.PNG

复制json格式的字符串,找个代码美化在线工具。

请求信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"compartmentId": "ocid1.tenancy.oc1..aaaaaaaavb77g5bgee2venclnxhonn3zjvb6xafodnx7uuya3edwq6fgd46a",
"displayName": "instance-20191023-1024",
"availabilityDomain": "shyQ:AP-SEOUL-1-AD-1",
"sourceDetails": {
"sourceType": "image",
"imageId": "ocid1.image.oc1.ap-seoul-1.aaaaaaaairwy3ids4ncccfatxvtwn57faqaajmb5oakqfcpkef665ek2zwpq"
},
"shape": "VM.Standard.E2.1.Micro",
"createVnicDetails": {
"subnetId": "ocid1.subnet.oc1.ap-seoul-1.aaaaaaaazd53sfej5mq6myipe75cshsonckjsskuvgn5pq7wth2wlziyslcq",
"assignPublicIp": false
},
"metadata": {
"ssh_authorized_keys": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQBo6+aohp7uY3H3YUuYMhgty+0m1Tw/48T/UEMZ98nEr/CzRvNByoN/s0guyhjqqi72D1oXaS2XFZLralWodCDWg7zeWKr/Nyc7udM5wYdVFqSeANlbSv4mS2CG1DyLIST8P3lpTXlWIcJWPUskGxjdMFVurGIIgEKKPpYMggK7eTwKoW/B+stLcKORjNYDGIh6Ny3R0JhR+i5Iyi7fb1N7Cei6nEiIDGvPE3soZpHcwE6AmxcYuOINhhDKwXQfFlLFngBx+Glyp4WA/7M08Ur+Fetk2Xk2DcY+GUnzHThQbgN4x3W48xQvx7IhPGEB+Z+3N2s9U6ZCzr+iyn0XauXx rsa-key-20190918"
},
"agentConfig": {
"isMonitoringDisabled": false,
"isManagementDisabled": false
},
"definedTags": {},
"freeformTags": {}
}

对照信息,填写参数

1
2
3
4
5
6
7
8
9
oci compute instance launch
--availability-domain shyQ:AP-SEOUL-1-AD-1
--display-name instance-20191023-1024
--image-id ocid1.image.oc1.ap-seoul-1.aaaaaaaairwy3ids4ncccfatxvtwn57faqaajmb5oakqfcpkef665ek2zwpq
--subnet-id ocid1.subnet.oc1.ap-seoul-1.aaaaaaaazd53sfej5mq6myipe75cshsonckjsskuvgn5pq7wth2wlziyslcq
--shape VM.Standard.E2.1.Micro
--assign-public-ip true
--metadata '{"ssh_authorized_keys": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQBo6+aohp7uY3H3YUuYMhgty+0m1Tw/48T/UEMZ98nEr/CzRvNByoN/s0guyhjqqi72D1oXaS2XFZLralWodCDWg7zeWKr/Nyc7udM5wYdVFqSeANlbSv4mS2CG1DyLIST8P3lpTXlWIcJWPUskGxjdMFVurGIIgEKKPpYMggK7eTwKoW/B+stLcKORjNYDGIh6Ny3R0JhR+i5Iyi7fb1N7Cei6nEiIDGvPE3soZpHcwE6AmxcYuOINhhDKwXQfFlLFngBx+Glyp4WA/7M08Ur+Fetk2Xk2DcY+GUnzHThQbgN4x3W48xQvx7IhPGEB+Z+3N2s9U6ZCzr+iyn0XauXx rsa-key-20190918"}'
--compartment-id ocid1.tenancy.oc1..aaaaaaaavb77g5bgee2venclnxhonn3zjvb6xafodnx7uuya3edwq6fgd46a

去掉回车,变成一条命令

1
oci compute instance launch --availability-domain shyQ:AP-SEOUL-1-AD-1 --display-name instance-20191024-1024 --image-id ocid1.image.oc1.ap-seoul-1.aaaaaaaairwy3ids4ncccfatxvtwn57faqaajmb5oakqfcpkef665ek2zwpq --subnet-id ocid1.subnet.oc1.ap-seoul-1.aaaaaaaazd53sfej5mq6myipe75cshsonckjsskuvgn5pq7wth2wlziyslcq --shape VM.Standard.E2.1.Micro --assign-public-ip true --metadata '{"ssh_authorized_keys": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQBo6+aohp7uY3H3YUuYMhgty+0m1Tw/48T/UEMZ98nEr/CzRvNByoN/s0guyhjqqi72D1oXaS2XFZLralWodCDWg7zeWKr/Nyc7udM5wYdVFqSeANlbSv4mS2CG1DyLIST8P3lpTXlWIcJWPUskGxjdMFVurGIIgEKKPpYMggK7eTwKoW/B+stLcKORjNYDGIh6Ny3R0JhR+i5Iyi7fb1N7Cei6nEiIDGvPE3soZpHcwE6AmxcYuOINhhDKwXQfFlLFngBx+Glyp4WA/7M08Ur+Fetk2Xk2DcY+GUnzHThQbgN4x3W48xQvx7IhPGEB+Z+3N2s9U6ZCzr+iyn0XauXx rsa-key-20190918"}' --compartment-id ocid1.tenancy.oc1..aaaaaaaavb77g5bgee2venclnxhonn3zjvb6xafodnx7uuya3edwq6fgd46a

复制运行这条命令,如果一会儿有输出的话那么就没问题了,接下来就可以定时执行命令创建云服务器了。

image.png

创建脚本

确认oci-cli是否安装好

1
2
[root@VM_0_12_centos ~]# find / -name oci_autocomplete.sh
/root/lib/oracle-cli/lib/python2.7/site-packages/oci_cli/bin/oci_autocomplete.sh

新建文件

/root下创建名为oci.sh的脚本文件

使用FinalShell新建文件

image.png

或者使用命令行

1
touch /root/oci.sh

编辑文件

使用FinalShell编辑文件,双击oci.sh文件

编辑文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
vi /root/oci.sh

## 键盘输入:i
## 粘贴代码
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 ......
## 保存退出:Esc-->:wq

定时执行脚本

1
2
3
4
5
crontab -e
## 键盘输入:i
## 粘贴代码,代码设置为2分钟执行一次
*/2 * * * * /bin/bash /root/oci.sh >> /root/oracle.log 2>&1
## 保存退出:Esc-->:wq

查看运行的定时命令

1
2
3
4
[root@VM_0_12_centos ~]# crontab -l
*/2 * * * * /bin/bash /root/oci.sh >> /root/oracle.log 2>&1
*/1 * * * * /usr/local/qcloud/stargate/admin/start.sh > /dev/null 2>&1 &
0 0 * * * /usr/local/qcloud/YunJing/YDCrontab.sh > /dev/null 2>&1 &

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

tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。

tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。

1
tail -F /root/oracle.log

显然直接查看oracle.log更直接

image.png

image.png

疑问与体验

  1. 参数中实例名字会不会创建两个一样的?

体验:可以创建2个一样名字的实例,比如第一个是instance-1024,第二个会是instance-1024-3132,就是会自动给加参数区分,但是看着名字是一样的。

  1. 比如我第一个账号创建成功了,第二个账号怎么做?

体验:重新修改oci配置,修改一下oci.sh文件的内容

  1. 甲骨文放货时间?

体验:体会是北京时间早上7:30-8:00之间

0%