首页 > 解决方案 > 使用 ansible 在 GCP 计算引擎上访问 vm 的外部 ip

问题描述

这就是我尝试检索 vms 的外部 IP 地址的方式:

{{hostvars[inventory_hostname]['ansible_env'].SSH_CONNECTION.split(' ')[2]}}

这是查看与节点关联的所有 IP 地址的另一种方法: ansible -m setup -i hosts -u

结果:

ansible [hostname (or) hostgroup] -m setup -i hosts -u [user name] | grep SSH

"SSH_CLIENT": "<ip a> 57894 22",
"SSH_CONNECTION": "<ip a> 57894 <internal ip> 22",
"SSH_TTY": "/dev/pts/0",

使用第一个片段返回的是第二个 IP,即 VM 的内部 IP。ansible如何拉取VM的外部IP?另外,什么是IP a?这肯定不是 VM 的外部 IP 地址。

标签: google-cloud-platformansible

解决方案


我相信“ansible_host”变量可以解决问题。下面的 playbook 输出了 vm 的 ip 地址。

- name: Show vm's ip
  hosts: gcp
  tasks:
    - debug:
        msg: "{{ansible_host}}"

推荐阅读