salt-syndic 使用方法

salt syndic 让 saltstack 支持分层次的架构,拓扑结构更加灵活。

关于 syndic 的使用场景,官方给的比较抽象,就说:

The Salt Syndic interface is a powerful tool which allows for the construction of Salt command topologies.

也就是架构将可以变成这样:

坦白地讲,syndic 的使用体验比较奇怪,在测试完 salt-syndic 之后,gtt 仍然想不到什么场景下会使用这个功能。

拓扑

都是 ubuntu14.04 操作系统,salt 版本 2015.5.3+ds-1trusty1

三个节点:dev193, dev194, dev195,分别对应着 salt-master, salt-syndic,salt-minion。如下图所示:

dev193 和 dev195 就按照正常的 salt-master 和正常的 salt-minion 进行配置。

配置方法

dev194 是本次测试的关键,安装两个服务 salt-syndicsalt-master

dev194~$ sudo apt-get install salt-syndic  salt-master

修改配置文件,以下配置都是 dev194 上的文件。

# /etc/salt/master
syndic_master: dev193
# /etc/salt/minion
id: dev194

重启服务:

sudo service salt-master restart
sudo service salt-syndic restart

测试

认证

master 节点认证syndic 节点:

dev193 ~ $ sudo salt-key -a dev194

syndic 节点认证 minion 节点:

dev194 ~$ sudo salt-key -a dev195

查看 key

dev193(master) 查看所有 minion:

dev193 ~ $ sudo salt-key -L
Accepted Keys:
dev194
Denied Keys:
Unaccepted Keys:
Rejected Keys:

dev193(syndic) 查看所有 minion:

dev194 ~ $ sudo salt-key -L
[sudo] password for ubuntu: 
Accepted Keys:
dev195
Denied Keys:
Unaccepted Keys:

注意,master 节点只能看到 syndic,但是不知道 syndic 下面管理了哪些 minion。换言之 syndic 是自治的,每个syndic 需要管理员自己想办法配置 file_roots, 不会自动从 master 上同步过来。

执行命令

master 上:

dev193 ~ $ time sudo salt '*' test.ping

dev195:
    True

real    0m15.319s
user    0m0.312s
sys     0m0.096s

syndic 上:

dev194 ~ $ time sudo salt '*' test.ping

dev195:
    True

real    0m5.313s
user    0m0.240s
sys     0m0.064s

有两个有趣的地方:

  1. master 和 syndic 的命令都要等一段时间才会返回,且 master 比 syndic 的等待时间更长,社区有一个关于这个问题的 issue
  2. master 和 syndic 上响应的都只有 dev195,所以可以确定 syndic 只负责转发请求,自身不会执行命令。如果需要 syndic 成为真正的 minion,需要再安装 salt-minion 服务。

黑魔法

下面是最让 gtt 觉得 syndic 的使用场景很诡异的地方,在 master 上执行:

$ sudo salt dev194 test.ping
## 无响应

 $ sudo salt dev195 test.ping
dev195:
    True

$ sudo salt-key  -l acc
Accepted Keys:
dev194

可以看到,虽然 master 上看不到 dev195,但是远程执行命令的时候 dev195 会突然冒出来。这种使用体验难道不会吓到运维人员吗?按照 salt 习惯肯定需要先在 salt-key 中看到这个 minion,才有可能有意识的控制这个 minion 的配置。经过 syndic 这么一搞,似乎 salt 突然变成了一个黑洞,里面偷偷摸摸多了好多奇怪的 minion(syndic导入进来的),这种设计太隐晦,而且特别反直觉,运维人员的内心肯定是这样的:

发表评论

电子邮件地址不会被公开。 必填项已用*标注