google-cloud-platform - 使用 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 地址。
解决方案
我相信“ansible_host”变量可以解决问题。下面的 playbook 输出了 vm 的 ip 地址。
- name: Show vm's ip
hosts: gcp
tasks:
- debug:
msg: "{{ansible_host}}"
推荐阅读
- swift - 选择文本字段时如何保持 UIScrollView 到位(swift)
- javascript - 本地 HTML 文件:由于跨源错误,无法读取本地文本文件
- javascript - 当只有一个变量应该改变时,为什么这两个变量都会改变?
- php - Laravel make:seeder 很慢
- python - 无法在 python 中读取来自 udp 多播的响应
- php - 在 Magento 1.9 中通过 mysql 更新产品属性
- java - 嵌入式 Spring Kafka 尝试启动运行时 Kafka
- javascript - 如何在 JavaScript 中合并两个数组并替换前一个数组的值
- ffmpeg - ffmpeg concat 两个大小不同的视频遇到“不匹配”错误
- python - 在 pandas 数据帧上迭代数学函数