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

[经验分享] 运维自动化之Saltstack使用详解

[复制链接]

尚未签到

发表于 2018-7-31 09:27:32 | 显示全部楼层 |阅读模式
  概要
  saltstack是基于Python开发的C/S架构的一款批量管理工具,底层采用动态的连接总线(ZeroMQ消息队列pub/sub方式通信),使用ssl证书签发的方式进行认证管理,使其可以用于编配, 远程执行, 配置管理等等。部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯。号称世界上最快的消息队列ZeroMQ使得saltstack非常快速的管理大量服务器,采用RSA Key方式确认身份,传输采用AES加密,安全性也非常有保障。
  Saltstack使用Python开发,是一个非常简单易用和轻量级的管理工具。由Master和Minion构成,通过ZeroMQ进行通信。
  SaltStack基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建。有如下特性:
  (1)、部署简单、方便;
  (2)、支持大部分UNIX/Linux及Windows环境;
  (3)、主从集中化管理;
  (4)、配置简单、功能强大、扩展性强;
  (5)、主控端(master)和被控端(minion)基于证书认证,安全可靠;
  (6)、支持API及自定义模块,可通过Python轻松扩展。
  Saltstack的master端监听4505与4506端口,4505为salt的消息发布系统,4506为salt客户端与服务端通信的端口;salt客户端程序不监听端口,客户端启动后,会主动连接master端注册,然后一直保持该TCP连接,master通过这条TCP连接对客户端控制,如果连接断开,master对客户端就无能为力了。当然,客户端若检查到断开后会定期的一直连接master端的。
  核心功能
  1、使命令发送到远程系统是并行的而不是串行的
  2、使用安全加密的协议
  3、使用最小最快的网络载荷
  4、提供简单的编程接口
  架构
  saltstack是基于C/S服务模式,在该架构中,服务器端叫做Master,客户端叫做Minion。传统的C/S模式我们这样理解,客户端发送请求给服务器端,服务器端接受到来自客户端的请求并处理完成后再返回客户端。 在saltstack架构中,不仅有传统的C/S服务模式,而且有消息队列中的发布与订阅(pub/sub)服务模式。目前我们一般用其C/S架构做批量管理。
DSC0000.png

  1)  Master:控制中心,salt命令运行和资源状态管理
  2)  Minion : 需要管理的客户端机器,会主动去连接Mater端,并从Master端得到资源状态
  3)  信息,同步资源管理信息
  4)  States:配置管理的指令集
  5)  Modules:在命令行中和配置文件中使用的指令模块,可以在命令行中运行
  6)  Grains:minion端的变量,静态的
  7)  Pillar:minion端的变量,动态的比较私密的变量,可以通过配置文件实现同步minions定义
  8)  highstate:为minion端下发永久添加状态,从sls配置文件读取.即同步状态配置
  9)  salt_schedule:会自动保持客户端配置
  Saltstack安装
  安装方式有四种,下面通过一个案例简单介绍在CentOS6.8上进行SaltStack部署。
  (1) yum方式安装(采用saltstack源)推荐这种方式,简单粗暴。注意没有配置saltstack源的,请先配置saltstack源。
  Version 7:
  rpm --importhttps://repo.saltstack.com/yum/redhat/7/x86_64/latest/SALTSTACK-GPG-KEY.pub
  Version 6:
  rpm --import https://repo.saltstack.com/yum/redhat/6/x86_64/latest/SALTSTACK-GPG-KEY.pub
  Save the following file to /etc/yum.repos.d/saltstack.repo:
  Version 7 and 6:
[saltstack-repo]name=SaltStack repo for RHEL/CentOS $releaseverbaseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latestenabled=1gpgcheck=1gpgkey=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub  安装好saltstack源后,用yum 命令来检查是否添加到源列表。
  yum repolist
  Master端安装:
  yum -y install salt-master
  Minon端安装:
  yum -y install salt-minion
  配置并启动Saltstack
  Salt 的配置非常简单。默认的 master 配置就可以在大多数情况下运行。仅仅需要更改的是 minion ,在 minion 配置文件中设置 master 的地址。
  The configuration fileswill be installed to /etc/salt and are named after the respective components,/etc/salt/master, and /etc/salt/minion.
MASTER配置
  默认Salt master监听所有网卡接口(0.0.0.0)的4505和4506端口. 如果需要指定监听IP, 通过 /etc/salt/master配置文件中的"interface"指令进行如下修改:
- #interface: 0.0.0.0+ interface: 10.0.0.1 #此处是server端监听的地址。auto_accept: True #此处是自动接受客户端发送过来的key,如果服务器很多的话,需要开启该功能。MINION配置
  尽管Salt Minion有许多配置选项,但配置Minion还是非常简单的. 默认的配置Minion会尝试连接DNS名为"salt"的master,如果minion解析到的地址正确,就无需再做配置.
  如果DNS名为"salt"并不能解析到本地正确的Master地址,需要通过如下方法修改 /etc/salt/minion 配置文件中的"master"指令:
- #master: salt+ master: 10.0.0.1 #这里改成你的master服务器地址id: web01 #建议这里修改成主机名,便于master端分辨  #在配置文件末尾加入下面内容,每隔5分钟自动同步master配置,效果等同于在客户端执行salt-call state.highstate或在server端执行 salt '*'state.highstateschedule:highstate:function: state.highstateminutes: 5  更新完配置后,需要重启Salt minion以使配置生效.
运行Saltstack
1. 前台启动master(如果要以daemon方式启动,请指定 -d参数<salt-master -d>):  
salt-master
2. 前台启动minion(如果要以daemon方式启动,请指定 -d参数<salt-minion -d>):  
salt-minion
  运行有问题?
  排除 Salt 故障最简单的方法是在前台运行 master 和 minion,同时把 log level 设为``debug``
salt-master --log-level=debug  以普通(root)用户运行:
  想要使用其他用户身份运行Salt,参见:conf_master:`user`参数在master配置文件中。
  Additionally, ownership, and permissions need to be set suchthat the desired user can read from and write to the following directories (andtheir subdirectories, where applicable):

  •   /etc/salt
  •   /var/cache/salt
  •   /var/log/salt
  •   /var/run/salt
  更多关于如何使用非特权用户运行salt的信息可以在 这里 找到。
  salt-key证书管理:
  master端证书存放路径:/etc/salt/pki/master/minions
  注意:如果细心的话,你会发现小写字母针对的单一对象,大写都是针对全体。比如 -l显示单一key,-L显示所有key;-a 接受指定key,而-A 就是接受所有key。
  saltstack认证原理
  1)、minion在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion里面设置)下自动生成minion.pem(private key)和 minion.pub(public key),然后将 minion.pub发送给master。

  2)、master在接收到minion的publickey后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion>  salt-key  -L            #查询所有接收到的证书
  salt-key  -a <证书名>   #接收单个证书
  salt-key  -A            #接受所有证书
  salt-key  -d <证书名>   #删除单个证书
  salt-key  -D            #删除所有证书
  Salt在Master和Minion之间的通讯采用AES加密. 这就确保了发送给minions的命令不会被篡改, Master和Minion之间的通讯认证通过信任的已接受的key进行管理.
  在发送给Minion之前,需要确保minion的key已经被Master所接受. 运行 ``salt-key``命令将列出Salt Master已知的所有keys.
[root@master ~]# salt-key -LUnaccepted Keys:alphabravocharliedeltaAccepted Keys:[root@master ~]# salt-key –A -y[root@master ~]# salt-key -LUnaccepted Keys:Accepted Keys:alphabravocharliedelta  发送test.ping指令
[root@moban ~]# salt '*' test.pingmoban2:    Truemoban1:    True  限于篇幅太长,请大家移步这里进行下载查看,谢谢!
  下载地址:http://down.51cto.com/data/2306388

运维网声明 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-543927-1-1.html 上篇帖子: Saltstack 迭代同步目录下的文件到客户端 下篇帖子: SaltStack安装及配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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