• 【01】Saltstack:从零开始 Saltstack


    写在前面的话

    最近一直都在整理以前的乱七八糟的笔记,所以会有很多老旧的东西都会被拉出来重新遛遛。算是再度系统的进行学习。

    关于 Saltstack 的一些概念

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

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

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

    一般我们用的最多的就是 C/S 的方式。

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

    至于为啥叫 Saltstack,据说 Salt 来源于作者所在的城市是美国的盐湖城,而 Stack 来源则是因为所有 Stack 的都火了,如 OpenStack。

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

    安装 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 的一些更高级的用法。 

  • 相关阅读:
    Java DES 测试
    HttpClient3.1 警告: Cookie rejected:
    WebService实现文件上传下载
    使用dom4j生成xml字符串,以及解析xml字符串
    Java 单例总结
    weblogic使用脚本部署
    Java比较两个日期的大小
    Ubuntu14.04 weblogic11g集群环境测试
    Gson 禁止特殊字符转码
    只用CSS做到完全居中
  • 原文地址:https://www.cnblogs.com/Dy1an/p/11098901.html
Copyright © 2020-2023  润新知