如何从master获取salt-minion的公网ip地址?

如何从master获取salt-minion的公网ip地址?
root@I-Kod:/home/i-kod/Desktop/ass1# salt '*' network.ip_addrs
{
   "I-Kod": [
       "10.0.1.215"
   ]
}
 {
   "neha-HP-Pavilion-15-Notebook-PC": [
    "10.0.0.231"
   ]
  }
  {
      "Pavilion": [
          "10.0.1.214"
   ]
  }
  {
      "Pavilion": [
          "10.0.1.214"
   ]

}

我使用 salt.modules.network 来查找私有 IP 地址,但我没有找到如何使用 salt-master 从 minions 获取公共 IP 地址。

http://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.network.html

我使用了这个文档。我需要公共 IP 来确定 salt 是否正常工作。

答案1

pincoded 的方法可行,但万一有人稍后偶然发现这一点,您也可以将外部 IP 作为一个 Grain:

import requests

def external_ip():
    """
    Return the external IP address reported by ipecho.net
    """
    try:
        r = requests.get('http://ipecho.net/plain')
        ip = r.content
    except:
        ip = ''
    return {'external_ip': ip}

从:https://gist.github.com/jfrost/7894718

答案2

你可以通过运行以下命令获取 minions 的公共 IP 地址:

salt '*' cmd.run "curl http://ipecho.net/plain"

您可以在此处找到更多详细信息:https://serverfault.com/a/616423/53467

答案3

您可以对 salt>= 2015 执行此操作

salt''cmd.run“facter ipaddress”

例如:salt'mysqlhost01'cmd.run“facter ipaddress”

相关内容