Некоторые миньоны находятся за NAT, и я хотел бы получить их общедоступный IP-адрес, видимый от мастера (для целей межсетевого экрана).
Существует зерно external_ip, но, как ни странно, оно зависит от стороннего сервиса и даже не работает для меня надежно.
Сначала убедитесь, что у каждого вашего миньона есть curl
пакет установлен.
Тогда вы можете использовать:
salt '*' cmd.run "curl ifconfig.me"
Если ifconfig.me не отвечает, вы можете использовать другого провайдера:
salt '*' cmd.run "curl -s icanhazip.com"
Каждый миньон ответит внешним 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
Компьютер за NAT не знает публичный IP-адрес, который он должен иметь ... Я не думаю, что вы сможете получить эту информацию от самого миньона.
Эта информация должна поступать с вашего устройства NAT, будь то брандмауэр, коммутатор или какое-либо другое устройство. Может быть, вы могли бы создать Бегуна в соли, чтобы получить эту информацию для вас.
В качестве альтернативы вы можете просто добавить файл в файловую систему вашего миньона, который содержит такую информацию, как общедоступный IP-адрес, который можно было бы получить немного проще ...