设为首页 收藏本站
查看: 1316|回复: 0

[经验分享] 自动化运维Saltstack系列(一)之基础功能篇

[复制链接]

尚未签到

发表于 2018-7-31 11:36:18 | 显示全部楼层 |阅读模式
  Saltstack简介
  Saltstack是基于Python开发的一套C/S架构,具备Puppet、Ansible功能于一身的配置管理工具,功能十分强大,各模块融合度及复用性极高;使用号称世界上最快的消息队列ZeroMQ使得Saltstack能够秒级在数万台服务器上进行各种操作,而且使用RAS Key方式确认身份,传输采用AES加密,安全性能更高;
  Saltstack不仅仅是一款配置管理工具,还是一款做云计算和数据中心架构编排利器。目前Salt-cloud项目也已经合并到Saltstack主项目里,Saltstack已经支持Docker相关模块,在友好地支持各大云平台之后,配合Saltstack的Mine实现各云平台业务自动扩展。
  自动化工具对比
  1)Puppet
  优点:老牌经典自动化配置软件、应用广泛、功能强大
  缺点:不能批处理,使用Ruby和DSL语言开发,没有相关技术栈的公司维护和二次开发起来比较很难,门槛比较高;缺少错误检查和报告;最致命的是Puppet的执行是无序执行,对于一些配置或者部署有先后顺序的项目比较难以处理
  2)Chef
  优点:功能也比较强大(资料比较少)
  缺点:官方文档说明比较模糊浅显;执行并非push实时执行,而是client端定时获取server端数据
  3)Ansible
  优点:社区年轻有活力,play-book使用yaml,简洁,不需要客户端client支持
  缺点:使用SSH管理配置,理论上慢于Saltstack,对于不苛求执行效率,Ansible也是一个不错的选择
  4)Saltstack
  优点:功能不仅限于配置管理、使用Python开发、Grain/Pillar支持、自定义moudles
  缺点:社区相对比较年轻,文档资料较少(其实官方文档已经讲解得很深入了...)
  Saltstack的三种运行方式
  ·  Local
  ·  Master/Minion
  ·  Salt SSH
  Saltstack最传统的运行方式还是C/S模式,需要在被管理节点上安装Minion客户端;其实Saltstack也支持SSH方式,无需安装Agent,通过SSH实现管理
  Saltstack目前最主要的三大主要功能
  ·  远程执行
  ·  配置管理
  ·  云管理
  接下来,我们也会一步步深入学习Saltstck的各个重要功能,通过Saltstack系列实现一套常规的web集群环境自动化配置管理...
  Saltstack部署
DSC0000.png

  实验环境
[root@saltstack-node1 ~]# cat /etc/redhat-release  
CentOS Linux release 7.2.1511 (Core)
  
[root@saltstack-node1 ~]# uname -r
  
3.10.0-327.el7.x86_64
  实验主机
saltstack-node1   10.0.0.185  Master/Minior  
saltstack-node2   10.0.0.186  Minior
  1)安装yum源
  Saltsatck官方提供了一些专门的repo源:https://repo.saltstack.com/#rhel
yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-1.el7.noarch.rpm  2)安装软件
  在node1上面安装Master和Minion,node2只安装Minion
[root@saltstack-node1 ~]# yum install -y salt-master salt-minion  
[root@saltstack-node2 ~]# yum install -y salt-minion
  修改Master的主机地址
[root@saltstack-node1 ~]# vim /etc/salt/minion  
#master: 172.16.2.185 #master地址,注意空格
  更改minion的id号
id: saltstack-node2.lichengbing.com #id号是唯一用来区分不同minion的标识,如果不设置,默认使用主机名  id号对于后期做配置管理作用很大,注意命名规则,等开启服务后,能在salt文件夹下看见id文件
[root@saltstack-node1 ~]# cd /etc/salt/  
-rw-r----- 1 root root 31892 Sep 25 19:27 minion
  3)开启Master和Minion
[root@saltstack-node1 ~]# systemctl start salt-master.service  
[root@saltstack-node1 ~]# systemctl start salt-minion.service
  
[root@saltstack-node2 ~]# systemctl start salt-minion
  
[root@saltstack-node1 ~]# netstat -tunlp
  
Active Internet connections (only servers)
  
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
  
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1039/sshd
  
tcp        0      0 0.0.0.0:4505            0.0.0.0:*               LISTEN      42394/python
  
tcp        0      0 0.0.0.0:4506            0.0.0.0:*               LISTEN      42542/python
  
tcp6       0      0 :::22                   :::*                    LISTEN      1039/sshd
  
udp        0      0 127.0.0.1:323           0.0.0.0:*                           746/chronyd
  
udp6       0      0 ::1:323                 :::*
  
                               746/chronyd
  
#4505端口用户消息发布、4506用户接收minion返回消息
  想查看saltstack具体进程,可以安装一个python-setproctitle库
[root@saltstack-node1 ~]# yum install -y python-setproctitle  
[root@saltstack-node1 ~]# systemctl restart salt-master
  
[root@saltstack-node1 ~]# ps -ef|grep salt-master
  
root      49340      1  8 20:28 ?        00:00:01 /usr/bin/python /usr/bin/salt-master ProcessManager
  
root      49354  49340  0 20:28 ?        00:00:00 /usr/bin/python /usr/bin/salt-master MultiprocessingLoggingQueue
  
root      49355  49340  0 20:28 ?        00:00:00 /usr/bin/python /usr/bin/salt-master ZeroMQPubServerChannel
  
root      49358  49340  0 20:28 ?        00:00:00 /usr/bin/python /usr/bin/salt-master EventPublisher
  
root      49359  49340  5 20:28 ?        00:00:00 /usr/bin/python /usr/bin/salt-master Maintenance
  
root      49466  49340  1 20:28 ?        00:00:00 /usr/bin/python /usr/bin/salt-master Reactor
  
root      49467  49340  2 20:28 ?        00:00:00 /usr/bin/python /usr/bin/salt-master ReqServer_ProcessManager
  
root      49470  49467  0 20:28 ?        00:00:00 /usr/bin/python /usr/bin/salt-master MWorkerQueue
  
root      49480  49467  6 20:28 ?        00:00:00 /usr/bin/python /usr/bin/salt-master MWorker-0
  
root      49483  49467  6 20:28 ?        00:00:00 /usr/bin/python /usr/bin/salt-master MWorker-1
  
root      49486  49467  6 20:28 ?        00:00:00 /usr/bin/python /usr/bin/salt-master MWorker-2
  
root      49488  49467  5 20:28 ?        00:00:00 /usr/bin/python /usr/bin/salt-master MWorker-3
  
root      49489  49467  6 20:28 ?        00:00:00 /usr/bin/python /usr/bin/salt-master MWorker-4
  4)Minion的私钥、公钥认证
  当配置好master地址,启动minion后,minion端会发送自己的公钥到master端请求验证
[root@saltstack-node2 ~]# tree /etc/salt/pki  
/etc/salt/pki
  
├── master
  
└── minion
  
    ├── minion.pem
  
    └── minion.pub  #这是minion的公钥
  
[root@saltstack-node2 ~]# md5sum /etc/salt/pki/minion/minion.pub
  
f1190cb622042a2cc9ca918b3d3ab7da  /etc/salt/pki/minion/minion.pub
  被成功发送到了master
[root@saltstack-node1 salt]# tree /etc/salt/pki  
/etc/salt/pki
  
├── master
  
│   ├── master.pem
  
│   ├── master.pub
  
│   ├── minions
  
│   ├── minions_autosign
  
│   ├── minions_denied
  
│   ├── minions_pre #minions_pre用来存储接收到的minion公钥
  
│   │   ├── saltstack-node1.lichengbing.com
  
│   │   └── saltstack-node2.lichengbing.com
  
│   └── minions_rejected
  
└── minion
  
    ├── minion.pem
  
    └── minion.pub
  
[root@saltstack-node1 salt]# md5sum /etc/salt/pki/master/minions_pre/saltstack-node2.lichengbing.com
  
f1190cb622042a2cc9ca918b3d3ab7da  /etc/salt/pki/master/minions_pre/saltstack-node2.lichengbing.com
  
#MD5验证确实是minion的公钥
  5)master认证minion
[root@saltstack-node1 ~]# salt-key #查看连接成功的minion  
Accepted Keys:
  
Denied Keys:
  
Unaccepted Keys:
  
saltstack-node1.lichengbing.com
  
saltstack-node2.lichengbing.com
  
Rejected Keys:
  
[root@saltstack-node1 ~]# salt-key -a saltstack-node1.lichengbing.com # -a认证参数
  
The following keys are going to be accepted:
  
Unaccepted Keys:
  
saltstack-node1.lichengbing.com
  
Proceed? [n/Y] y
  
Key for minion saltstack-node1.lichengbing.com accepted.
  
[root@saltstack-node1 ~]# salt-key -a saltstack-node2.lichengbing.com
  
The following keys are going to be accepted:
  
Unaccepted Keys:
  
saltstack-node2.lichengbing.com
  
Proceed? [n/Y] y
  
Key for minion saltstack-node2.lichengbing.com accepted.
  
[root@saltstack-node1 ~]# salt-key
  
Accepted Keys: #认证成功的minion
  
saltstack-node1.lichengbing.com
  
saltstack-node2.lichengbing.com
  
Denied Keys:
  
Unaccepted Keys:
  
Rejected Keys:
  认证成功后,master也会将自己的公钥发一份到minion,作为以后连接认证
[root@saltstack-node2 ~]# tree /etc/salt/pki  
/etc/salt/pki
  
├── master
  
└── minion
  
    ├── minion_master.pub #master发送过来的公钥
  
    ├── minion.pem
  
    └── minion.pub
  远程执行
  认证成功后,在master之上就可以执行简单的远程执行命令了
  测试minion存活情况
[root@saltstack-node1 ~]# salt '*' test.ping  
saltstack-node1.lichengbing.com:
  
    True
  
saltstack-node2.lichengbing.com:
  
    True
  批量对所有minion远程执行一个w命令
[root@saltstack-node1 ~]# salt '*' cmd.run 'w'  
saltstack-node1.lichengbing.com:
  
     20:14:22 up  7:21,  2 users,  load average: 0.10, 0.28, 0.31
  
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
  
    root     tty1                      15:49    4:18m  0.40s  0.40s -bash
  
    root     pts/1    10.0.0.1         15:55   22.00s  3.22s  1.20s /usr/bin/python /usr/bin/salt * cmd.run w
  
saltstack-node2.lichengbing.com:
  
     20:14:23 up  7:32,  2 users,  load average: 0.00, 0.01, 0.05
  
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
  
    root     tty1                      12:51    1:50m  0.29s  0.29s -bash
  
    root     pts/0    10.0.0.1         18:24    4:39   1.51s  1.51s -bash

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-544106-1-1.html 上篇帖子: SaltStack安装Nginx-Sunset 下篇帖子: 自动化运维Saltstack系列(二)之远程执行和常用模块
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表