【1】Saltstack handbook:从零开始 Saltstack

 

 

写在前面的话node

 

最近一直都在整理之前的乱七八糟的笔记,因此会有不少老旧的东西都会被拉出来从新遛遛。算是再度系统的进行学习。学习

 

 

关于 Saltstack 的一些概念测试

 

Saltstack 是基于 Python 开发的,和其相似的东西还有 Puppet(基于 rubby,更早),Ansible(基于 Python)。spa

Saltstack 主要包含 3 大功能:远程执行 / 配置管理(状态管理) / 云管理。设计

Saltstack 的四种运行方式:Local,C/S(Master / Minion),Syndic,SSH。code

通常咱们用的最多的就是 C/S 的方式。blog

咱们会在不少资料上面看到这样一个说法:Saltstack 就是简化版的 Puppet + 强化版的 Func。ip

至于为啥叫 Saltstack,听说 Salt 来源于做者所在的城市是美国的盐湖城,而 Stack 来源则是由于全部 Stack 的都火了,如 OpenStack。开发

最后,Saltstack 消息发布系统监听端口为 4505,客户端与服务端通讯端口为 4506。 get

 

安装 Saltstack

 

咱们这里实现准备了 3 台 CentOS 7 的虚拟机,信息以下:

IP地址 主机名 说明
192.168.100.111 demo-node1 Master 节点,CentOS Linux release 7.5
192.168.100.112 demo-node2 Minion 节点,CentOS Linux release 7.5
192.168.100.113 demo-node3 Minion 节点,CentOS Linux release 7.5

 

Saltstack 自己在 epel 源中就存在,但咱们这里仍是使用官方给咱们提供的源安装:

http://repo.saltstack.com/#rhel

咱们能够从官方的源找到对应的系统,我这里采用的都是 CentOS7。

1. 在三个节点都安装源:

yum -y install https://repo.saltstack.com/yum/redhat/salt-repo-latest.el7.noarch.rpm

完成之后在 /etc/yum.repos.d/ 目录会生成一个 salt-latest.repo 的源文件。咱们这里建议 Saltstack 采用 yum 安装的方式而非源码安装,后者容易出现各类问题。

 

2.  在主节点安装 Salt master 和 minion:

yum -y install salt-master salt-minion

 

3. 在其余节点上只须要按照 Salt minion: 

yum -y install salt-minion

从按照过程咱们能够看到会安装不少 Python 依赖包,这就是不推荐源码安装的主要缘由:

至此,Saltstack 安装完成!

 

 

配置 Saltstack 

 

安装完成后不表明咱们就能使用了,还须要对服务进行配置,具体方法以下:

1. 主节点启动 Master:

systemctl start salt-master

 

2. 全部节点配置 Minion:配置文件为 /etc/salt/minion

# 第 16 行,通常写 Master 的域名最好,没用域名写 IP
master: 192.168.100.111

# 第 112 行,配置每台主机的 id,要求惟一且具备意义,用于区分主机
id: saltstack-node-01

 

3. 全部节点启动 Minion: 

systemctl start salt-minion

 

4. 此时查看目录变化(这里咱们作个拓展,帮助咱们更好的了解 saltsatck):

tree /etc/salt/

若是没有 tree 命令 yum 安装一个便可,查看当前的目录结构变化:

Master 节点:

Minion 节点:

能够看到,在 Master 和 Minion 节点的 pki/minion 目录下都生成了公钥私钥文件。同时,Minion 都会把本身的公钥文件发给 Master 节点。并改名为咱们设置的 id 名字。咱们能够经过 MD5 查看两个文件是否为同一个。

在 Master 节点查看 node3 的公钥:

在 node3 查看 pub 文件:

能够看到两个 MD5 值是相同的,因此这实际上是同一个文件。

注意:在其余资料上可能见到生成 minion_id 文件,缘由是没配置 minion 配置中的 id ,若是有配置是不会生成的。

 

5. 在 Master 上面查看 Key:

启动了 Minion 并不就能表明着可以连入 Master,这还牵扯到受权,咱们能够查看目前受权的主机状态:

salt-key

以下图:

 

6. 容许受权:

salt-key -a saltstack-node-01

以下图:

这里可使用通配符,如:

salt-key -a saltstack-node-*

那么剩下的都会被添加授信:

此时再度查看 Master 节点的目录结构:

能够发现,被受权的 Key 都从 minions_pre 下移动到了 minions 目录,同时在 minion 目录下新增了 minion_master.pub 文件,这样就实现了互相通讯。

同时这也意味着咱们以前配置 id 的重要性,由于你修改 id,意味着这个公钥就失效了。

同时在 id 设计的时候,咱们应该让他具备意义,好比咱们如今有两个项目,一个叫 erp,一个叫 mall,那么针对 erp 的主机群的 id 设计就应该是 erp-xxxx,mall 的 id 就应该是是 mall-xxxx,这样咱们就能使用通配符对主机群组进行批量管理。

固然还有一下常见的参数,经过 salt-key -h 查看,如:

salt-key 参数 说明
-L 显示全部
-A 接受全部受权
-d 删除某个 Key
-D 删除全部

 

7. 测试节点通讯:

salt '*' test.ping

使用单引号的目的是转义,咱们向全部受权的发起状态检测,结果如图: 

 

8. 远程执行命令:

salt 'saltstack-node-03' cmd.run 'ip a'

执行效果如图:

 

其它示例:

1. 通配符使用的时候,如选择 node1,node2,能够写成 node[12]

2. 选择多台的时候可使用逗号隔开,可是须要 -L 参数,如:salt -L 'node1,node2' test.ping

3. 相同前缀也可使用竖线分割,可是必需要 -E 参数,如:salt -E 'node(1|2)' test.ping

 

 

小结

 

至此,咱们算是简单得了解了安装 Saltstack 以后一些简单的配置,接下来咱们将慢慢的正式开始谈及 Saltstack 的一些更高级的用法。 

相关文章
相关标签/搜索