You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Ansible获取GCP Compute Engine虚拟机的外部IP地址

问题解答

1. <ip a>字段含义解释

SSH_CONNECTION是远程主机SSH服务内置的会话环境变量,固定格式为客户端IP 客户端端口 服务端监听IP 服务端监听端口,其中<ip a>就是你运行Ansible命令的控制节点的公网出口IP,是SSH连接的发起方地址,和GCP虚拟机本身的IP没有关系。

2. 获取GCP Compute Engine虚拟机外部IP的可行方案

你之前的方法无法获取外网IP的原因是:GCP的公网IP是绑定在云平台网络层面的,不是直接配置在虚拟机操作系统的网卡上,虚拟机内部的系统级变量、网卡信息默认只能看到内网IP,需要通过以下两种方式获取:

  • 方法1:调用GCP内置元数据接口获取(无需额外权限、无需调整Inventory配置)
    可以直接在Ansible中通过任务获取元数据返回的公网IP,示例任务如下:
    - name: 获取GCP虚拟机外部IP
      ansible.builtin.shell: |
        curl -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip
      register: gcp_external_ip
    
    获取后可以通过{{ gcp_external_ip.stdout }}调用这个公网IP值,如果虚拟机配置了多个网卡、多个公网IP,调整元数据路径中network-interfaces/和access-configs/后的序号即可获取对应公网IP。
  • 方法2:通过GCP动态Inventory直接读取
    如果你使用GCP官方提供的gcp_compute动态Inventory来管理资产,外部IP会被自动采集到主机变量中,直接引用变量{{ hostvars[inventory_hostname].gcp_compute_networkInterfaces[0].accessConfigs[0].natIP }}即可获取。

内容的提问来源于stack exchange,提问作者GreatOrdinary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:24:04