如何列出 minions 连接的 IP 地址?

如何列出 minions 连接的 IP 地址?

一些小兵位于 NAT 后面,我想获取主兵看到的它们的公共 IP 地址(出于防火墙目的)。

有 external_ip 粒度,但据我所知,它依赖于第三方服务,甚至对我来说不能可靠地工作。

答案1

首先确保您的每个 minion 都已curl安装软件包。

然后你可以使用:

salt '*' cmd.run "curl ifconfig.me"

如果 ifconfig.me 没有响应,您可以使用其他提供商:

salt '*' cmd.run "curl -s icanhazip.com"

每个 minion 都会响应外部 ip 地址:

zeus.example.com:
    1.2.3.1
hera.example.com:
    1.2.3.2
apollo.example.com:
    1.2.3.3
athena.example.com:
    1.2.3.4

如果未安装 curl,则响应将是:

castor.example.com:
    /bin/bash: curl: command not found

答案2

NAT 后面的计算机不知道它应该拥有的公共 IP 地址...我认为您无法从 minion 本身获取此信息。

此信息必须来自您的 NAT 设备,无论是防火墙、交换机还是其他设备。也许您可以在 salt 中创建一个 Runner 来为您检索该信息。

或者,您可以简单地在您的 minion 的文件系统中放入一个包含诸如公共 IP 地址之类的信息的文件,这样可以更轻松地检索这些信息......

相关内容