自动化运维Saltstack系列之基础功能篇
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化运维Saltstack系列之基础功能篇相关的知识,希望对你有一定的参考价值。
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部署
实验环境
[[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [[email protected] ~]# 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
[[email protected] ~]# yum install -y salt-master salt-minion [[email protected] ~]# yum install -y salt-minion
修改Master的主机地址
[[email protected] ~]# vim /etc/salt/minion #master: 172.16.2.185 #master地址,注意空格
更改minion的id号
id: saltstack-node2.lichengbing.com #id号是唯一用来区分不同minion的标识,如果不设置,默认使用主机名
id号对于后期做配置管理作用很大,注意命名规则,等开启服务后,能在salt文件夹下看见id文件
[[email protected] ~]# cd /etc/salt/ -rw-r----- 1 root root 31892 Sep 25 19:27 minion
3)开启Master和Minion
[[email protected] ~]# systemctl start salt-master.service [[email protected] ~]# systemctl start salt-minion.service [[email protected] ~]# systemctl start salt-minion [[email protected] ~]# 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库
[[email protected] ~]# yum install -y python-setproctitle [[email protected] ~]# systemctl restart salt-master [[email protected] ~]# 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端请求验证
[[email protected] ~]# tree /etc/salt/pki /etc/salt/pki ├── master └── minion ├── minion.pem └── minion.pub #这是minion的公钥 [[email protected] ~]# md5sum /etc/salt/pki/minion/minion.pub f1190cb622042a2cc9ca918b3d3ab7da /etc/salt/pki/minion/minion.pub
被成功发送到了master
[[email protected] 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 [[email protected] 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
[[email protected] ~]# salt-key #查看连接成功的minion Accepted Keys: Denied Keys: Unaccepted Keys: saltstack-node1.lichengbing.com saltstack-node2.lichengbing.com Rejected Keys: [[email protected] ~]# 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. [[email protected] ~]# 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. [[email protected] ~]# salt-key Accepted Keys: #认证成功的minion saltstack-node1.lichengbing.com saltstack-node2.lichengbing.com Denied Keys: Unaccepted Keys: Rejected Keys:
认证成功后,master也会将自己的公钥发一份到minion,作为以后连接认证
[[email protected] ~]# tree /etc/salt/pki /etc/salt/pki ├── master └── minion ├── minion_master.pub #master发送过来的公钥 ├── minion.pem └── minion.pub
远程执行
认证成功后,在master之上就可以执行简单的远程执行命令了
测试minion存活情况
[[email protected] ~]# salt ‘*‘ test.ping saltstack-node1.lichengbing.com: True saltstack-node2.lichengbing.com: True
批量对所有minion远程执行一个w命令
[[email protected] ~]# 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 [email protected] 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 [email protected] 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
本文出自 “改变从每一天开始” 博客,请务必保留此出处http://lilongzi.blog.51cto.com/5519072/1859159
以上是关于自动化运维Saltstack系列之基础功能篇的主要内容,如果未能解决你的问题,请参考以下文章
自动化运维Saltstack系列之States配置管理和jinja模板的使用
自动化运维工具之SaltStack-1SaltStack介绍及安装