利用GCloud SDK更换谷歌云(GCP)IP地址

Linux, 折腾 2020/01/07

谷歌云,Google Cloud Platform,以下简称GCP

最近GCP的香港线路老是炸,一到高峰期丢包非常严重,虽然WEB端可以给实例(Compute Instance)更换IP,但是还是想着利用API来实现。记录一下折腾的过程。

我换来换去就那几个地址(貌似是3个),有没有路过的大佬指点迷津,感谢感谢 :害羞:

以下操作均在 CentOS 7 下执行

一、安装SDK

其他系统安装SDK环境见:https://cloud.google.com/sdk/docs/

SSH端执行

sudo tee -a /etc/yum.repos.d/google-cloud-sdk.repo << EOM
[google-cloud-sdk]
name=Google Cloud SDK
baseurl=https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
       https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOM

注:gpgkey 的第二行必须缩进,如上文所示,也可以直接vim\vi\nano新建此文件

开始安装

yum install google-cloud-sdk -y

二、初始化

gcloud init

复制网址到浏览器,授权登录,获得一串验证码并粘贴回SSH窗口,都是常规操作,就不再啰嗦

注意这里需要记录一下 项目名称(Project Name),后面的命令需要用到,假设我这里是 fifth-test-123456

登录初始化完毕后,可以验证一下,执行:

gcloud compute instance list

可以列出当前项目下的实例,需要记录下 实例名称(Instance Name),我这里是 instance-3

查看IP地址池

gcloud compute addresses list

记录红框标记处的 IP名称(IP Name),比如我的是 a

三、开始更换

假设现在的实例已分配IP,则更换的步骤主要是:

删除IP —— 创建IP —— 查询IP —— 删除配置 —— 绑定IP

1.删除IP

gcloud compute addresses delete IP名称 -q

执行成功后,实例已绑定的静态IP将会变为临时IP,此时这个IP还是可以正常访问到实例的

-q 参数表示忽略所有确认提示

2.创建IP

gcloud compute addresses create 需创建的IP名称 --project=项目名称 --region=区域,香港为asia-east2

这行命令中 需创建的IP名称 任意填写,比如还是 a

成功执行后会随机创建一个新的IP,不过此时该IP并未分配到实例上,无法正常访问

3.获取IP

由于创建后并不会回显创建的IP是多少,只能自行查询,记录查询到的新IP地址

gcloud compute addresses list

4.删除ACCESS-CONFIG

P.S 这里我不知道为什么WEB端可以一键操作,到了SDK下却需要多做这一步

gcloud compute instances describe 实例名称

找到 accessConfigs - name 这一项,记录该值,一般为 External NATexternal-nat

删除配置

gcloud compute instances delete-access-config 实例名称 --access-config-name "External NAT或external-nat"

此时IP池仅剩新分配的IP,并且未绑定到实例

5.绑定IP

gcloud compute instances add-access-config 实例名称 --project=项目名称 --address=新IP地址

至此已完成实例的IP重新分配,可以测试一下了。

四、自动化

做到这就得考虑考虑怎么让它自动化的运作起来,写个脚本吧,一键更换GCP IP脚本

随便写的:https://file.bugxia.com/s/9SzAoxTkRsXkQw6

本文标签:


评论(本站已开启评论回复邮件通知功能,请如实填写邮箱以便及时收到回复)