如何将 Salt Stack 与所有位于 NAT 之后的 Minion 一起使用(不可公开访问,默认 salt 端口未打开)?

Mou*_*inX 6 remote-access configuration-management saltstack

Salt Stack Minion 是否可以使用在所有消费者 NAT 路由器中默认打开的标准端口(并且没有公共 DNS 记录或静态 IP)从 NAT/防火墙等后面与 salt master 通信?

我正在完成我的第一个盐教程,这就是我被卡住的地方。

我可以在 Ubuntu salt-master 上配置 iptables。但是我无法控制小兵将坐在后面的路由器/ NAT。

到目前为止,我尝试了这些设置:

/etc/salt/master:

publish_port: 465
ret_port: 443
Run Code Online (Sandbox Code Playgroud)

/etc/salt/minion:

master_port: 465
Run Code Online (Sandbox Code Playgroud)

那没有用。

背景:

我有一个定制开发的应用程序,目前在大约 40 台 Kubuntu 笔记本电脑上运行(还有更多计划)。每隔几个月我就必须更新应用程序。(通常这只是替换 .jar 文件,这需要 root 权限。)我还必须运行 Ubuntu 更新和其他一些小事情。我一直在手动操作,使用 Team Viewer 登录每个客户端。

我想极大地改进这个过程。我知道的两个选项是:

  1. 使用反向 ssh 隧道和 bash 脚本。我测试了这个并且它有效。但是我没有得到任何报告等,我会得到 Salt Stack。

  2. 使用 Salt Stack(或类似的)管理工具。但我需要一个非常简单的工具。我不能在大的学习曲线上投入任何时间。

我查看了 Puppet 和一堆相关工具。我发现的唯一一个对我来说看起来足够简单的(到目前为止)是 Salt Stack。但是我现在卡住了,因为我的仆从无法到达盐主,如上所述。

我很欣赏建议。

Mou*_*inX 7

答案是“它只是有效”。无需更改配置文件(master 或 minion)。无需担心 Minion 的 NAT 或防火墙。

但是在master上,需要在防火墙上打开两个端口。我完成了这个:

iptables -A INPUT -m state --state new -m tcp -p tcp --dport 4505 -j ACCEPT
iptables -A INPUT -m state --state new -m tcp -p tcp --dport 4506 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

在 Minion 上,向 /etc/hosts 添加一个条目,将名称“salt”指向 master 的 IP 地址。例子:

root@minion2:~# cat /etc/hosts
127.0.0.1       localhost.localdomain   localhost
111.222.333.444  salt salt.example.com
Run Code Online (Sandbox Code Playgroud)

真的,这很简单。