Salt Stack 小兵能否使用在所有消费者 NAT 路由器中默认打开的标准端口(并且小兵没有公共 DNS 记录或静态 IP)从 NAT/防火墙等后面与 Salt Master 进行通信?
我正在努力完成我的第一个盐教程,但我遇到了困难。
我可以在 Ubuntu salt-master 上配置 iptables。但我无法控制 minions 所处的路由器/NAT。
到目前为止我尝试了以下设置:
在/etc/salt/主服务器中:
publish_port: 465
ret_port: 443
在/etc/salt/minion中:
master_port: 465
那没有用。
背景:
我有一个定制开发的应用程序,目前运行在大约 40 台 Kubuntu 笔记本电脑上(计划增加更多)。每隔几个月我必须更新该应用程序。(通常这仅相当于替换 .jar 文件,这需要 root 权限。)我还必须运行 Ubuntu 更新和一些其他小操作。我一直手动逐个执行此操作,使用 Team Viewer 登录每个客户端。
我希望大幅改善此流程。我知道的两个选项是:
使用反向 ssh 隧道和 bash 脚本。我测试过,它有效。但我没有得到使用 Salt Stack 时得到的任何报告等。
使用 Salt Stack(或类似)管理工具。但我需要一个非常简单的工具。我不能把时间花在复杂的学习上。
我查看了 Puppet 和一堆相关工具。我发现唯一一个对我来说足够简单的工具(到目前为止)是 Salt Stack。但我现在陷入困境,因为我的 minion 无法联系到 salt-master,如上所述。
我很感激您的建议。
答案1
答案是“它就是有效”。无需更改配置文件(无论是 master 还是 minion)。无需担心 minion 的 NAT 或防火墙。
但是,在主服务器上,需要在防火墙上打开两个端口。我通过以下方式完成了此操作:
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
在 minions 上,向 /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
确实,非常简单。
答案2
为了使 minion 的连接能够通过任何允许 http 和 https 端口传出的防火墙,我们在 master 上使用了这个:
publish_port: 80
ret_port: 443
这是关于 minion 的:
publish_port: 80
master_port: 443
我仍然发现这些名字令人困惑 —— 我希望publish_port
master 上的名字与master_port
minion 上的名字相对应 —— 但事实就是这样。