- 2022/5/4 更新:新增IPv6地址分配方法
安装和配置
首先需要安装oci命令行和jq,详细步骤参考 OCI文档。
sudo apt install python3-pip jq
pip install --user oci-cli
# oci --version
3.6.1
安装完oci命令在 ~/.local/bin 下面,添加到PATH即可。
使用下面命令初始化配置
oci setup config
如果要用脚本申请VM,还需要安装terraform
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update && sudo apt-get install terraform
# terraform --version
Terraform v1.1.7
更换IPv4地址
使用下面脚本更换VM公网IP,注意下面命令分配的是临时公网IP。
#获取本机IP
IP=$(curl -s https://api.ipify.org)
#或者指定目标机器的公网IP
#IP=88.88.88.88
#Tenancy ID,按实际情况填写
TID="ocid1.tenancy.oc1..aaaaaaaaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
#AVAILABILITY DOMAIN,用下面命令获取
#oci iam availability-domain list -c $TID
ADO="gspA:AP-OSAKA-1-AD-1"
PIPID=$(oci network public-ip list -c $TID --scope AVAILABILITY_DOMAIN --availability-domain $ADO --all|jq -r '.data[]|select(."ip-address" == "'"$IP"'")|.id')
PRIID=$(oci network public-ip list -c $TID --scope AVAILABILITY_DOMAIN --availability-domain $ADO --all|jq -r '.data[]|select(."ip-address" == "'"$IP"'")|."private-ip-id"')
echo "Target IP=$IP"
echo "PublicIP Id=$PIPID"
echo "PrivatIP Id=$PRIID"
#注销旧IP
oci network public-ip delete --public-ip-id $PIPID --force --wait-for-state TERMINATED
sleep 5
#分配新的临时公网IP
oci network public-ip create -c $TID --lifetime EPHEMERAL --private-ip-id $PRIID --wait-for-state ASSIGNED
#检查运行结果
oci compute instance list --all -c $TID
分配IPv6地址
#获取网卡信息
oci compute vnic-attachment list -c $TID
#列出指定网卡的ipv6地址,如果没有返回说明还没分配
oci network ipv6 list --vnic-id "ocid1.vnic.xxxxxxxxxxxxxxxxxxxx"
#给指定网卡分配指定ipv6地址
oci network ipv6 create --vnic-id "ocid1.vnic.xxxxxxxxxxxx" --ip-address 2222:3333:4444:5555::6666
常用命令
- 获取实例基本信息
oci compute instance list -c $TID
你好博主,我照着做后,到这一步卡住了
#分配新的临时公网IP
oci network public-ip create -c $TID --lifetime EPHEMERAL --private-ip-id $PRIID --wait-for-state ASSIGNED
#提示报错
RequestException: (MaxRetryError("OCIConnectionPool(host='iaas.ap-osaka-1.oraclecloud.com', port=443): Max retries exceeded with url: /20160918/publicIps (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'))"), 'Request Endpoint: POST https://iaas.ap-osaka-1.oraclecloud.com/20160918/publicIps See https://docs.oracle.com/en-us/iaas/Content/API/Concepts/sdk_troubleshooting.htm for help troubleshooting this error, or contact support and provide this full error message.')
#帮我看看是啥问题,谢谢
我的TG号 @snvpn
你这个 failure in name resolution 看起来像是网络连接问题,访问不了https://iaas.ap-osaka-1.oraclecloud.com/20160918/publicIps ,如果oci命令行是装在国内机器可能有这种问题,装在oracle cloud的机器试试。