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

[经验分享] 系统自动化配置和管理工具:SaltStack

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-26 12:18:08 | 显示全部楼层 |阅读模式

系统自动化配置和管理工具:SaltStack



系统自动化配置和管理工具 SaltStack 采用 zeromq 消息队列进行通信,和 Puppet/Chef 比起来,SaltStack 速度快得多。还有一点我们喜欢 SaltStack 的地方是它是 Python 写的,比 Puppet/Chef 这些 Ruby 工具更接近我们的能力圈。
AD:WOT2015 互联网运维与开发者大会 热销抢票





  
  我们的服务器由 Puppet 配置管理工具来管理,服务器上线后由 puppet 完成初始化和配置等一系列工作(比如,静态 IP 配置,DNS 设置,NFS/SAN 挂载,LDAP/Kerberos 登录,安全加固配置,内核参数优化,防火墙规则配置等等),等初始化完成后开始运行,运行一段时间后会有一些需要自动和手动操作的任务(比如升级、重启、备份等),这时候我们使用 Fabric 来批量执行这些临时任务。
  所以从这里可以看到 Puppet 和 Fabric 其实是两个不同性质的工具,看下面的归类可能会更清楚一些。Puppet 和 Fabric 两个的工作其实可以由一个工具 SaltStack(或 AnsibleWorks)完成,减少一个工具的使用会减轻一点负担(学习工具的人力成本、安装和配置工具的时间成本等等)。
  

操作系统和软件的安装、配置、初始化等;  (Puppet, Chef, CFEngine, AnsibleWorks, SaltStack)
  自动执行任务,比如定期备份、清除日志等;
  (Fabric, AnsibleWorks, SaltStack)
  手动执行任务,比如部署应用、升级、重启、检查和校验文件系统、增加用户等。
  (Fabric, Rake, AnsibleWorks, SaltStack)
  SaltStack 采用 zeromq 消息队列进行通信,和 Puppet/Chef 比起来,SaltStack 速度快得多。还有一点我们喜欢 SaltStack 的地方是它是 Python 写的,比 Puppet/Chef 这些 Ruby 工具更接近我们的能力圈。
  安装主控服务器(salt master)
  和大多数类似工具一样,SaltStack 需要在一台机器(主控)上安装服务器端软件(SaltStack 称之为 salt master),在多台机器(受控)上安装客户端软件(SaltStack 称之为 salt minion)。在主控机器上给下属(受控)发命令,在受控机器上接受和执行上级(主控)的命令。
  在 Ubuntu 上安装 salt master:


  • $ sudo add-apt-repository ppa:saltstack/salt
  • $ sudo apt-get update
  • $ sudo apt-get install salt-master

  在 CentOS 6.x 上安装 salt master:


  • # rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release-6-8.noarch.rpm
  • # yum update
  • # yum install salt-master

  安装受控客户端(salt minion)
  在 Ubuntu 上安装 salt minion:


  • $ sudo add-apt-repository ppa:saltstack/salt
  • $ sudo apt-get update
  • $ sudo apt-get install salt-minion

  在 CentOS 6.x 上安装 salt minion:


  • # rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release-6-8.noarch.rpm
  • # yum update
  • # yum install salt-minion

  安装完 salt minion 后记得修改配置文件,让 salt minion 指向 salt master 服务器地址:


  • $ sudo vi /etc/salt/minion
  • ...
  • # Set the location of the salt master server, if the master server cannot be
  • # resolved, then the minion will fail to start.
  • master: saltmaster.vpsee.com
  • ...
  • $ sudo restart salt-minion

  在 master 上执行 salt-key list 就会看到有个 minion1.vpsee.com 请求加入受控,执行 -a 接受请求后,主控和受控之间的信任关系就建立起来了,主控就可以任意 “摆布” 受控了:


  • # salt-key list
  • Accepted Keys:
  • Unaccepted Keys:
  • minion1.vpsee.com
  • Rejected Keys:
  • # salt-key -a minion1.vpsee.com
  • The following keys are going to be accepted:
  • Unaccepted Keys:
  • minion1.vpsee.com
  • Proceed? [n/Y]

  执行命令的例子
  在主控机器上执行一个命令,让所有受控机器执行 hostname 命令:


  • # salt '*' cmd.run "hostname"
  • minion1.vpsee.com:
  • minion1.vpsee.com

  在主控机器上执行一个命令,让所有受控机器上执行内建 test.ping 命令:


  • # salt '*' test.ping
  • minion1.vpsee.com:
  • True

  还有一些内建命令可以尝试:


  • # salt '*' disk.usage
  • # salt '*' network.interfaces

  执行状态的例子
  开头的时候我们说了 SaltStack = Fabric + Puppet,上面 “执行命令的例子” 演示了 Fabric 类似的功能,这里要演示的是 Puppet 类似的功能,在主控上定义好系统配置应该有的状态,然后受控自动完成相应的操作和配置。
  首先确定状态定义的文件应该放在什么地方,以下操作都在主控(salt master)上执行。检查 /etc/salt/master 文件的 file_roots 条目,默认是在 /srv/salt 下,如果没有这个目录还需要手动创建一个:


  • # vi /etc/salt/master
  • ...
  • #file_roots:
  • #  base:
  • #    - /srv/salt
  • ...
  • # mkdir /srv/salt

  比如我们想在所有受控机器上安装 vim 软件包,并使用自己定义的 vimrc 文件:


  • # vi /srv/salt/vim.sls
  • vim:
  • pkg.installed
  • /etc/vimrc:
  • file.managed:
  • - source: salt://vimrc
  • - mode: 644
  • - user: root
  • - group: root
  • # vi /srv/salt/vimrc
  • syntax enable
  • set textwidth=79
  • set shiftwidth=4
  • set tabstop=4
  • set expandtab
  • set softtabstop=4
  • set shiftround
  • set fileencodings=utf-8
  • set encoding=utf8
  • set tenc=utf8

  强制执行这个状态:


  • # salt '*' state.sls vim

  再来一个例子,参考 “安装和使用系统监控工具 Glances” 一文,我们想在所有受控机器上安装 Glances,如何实现呢?


  • # vi /srv/salt/glances.sls
  • python-pip:
  • pkg.installed
  • build-essential:
  • pkg.installed
  • python-dev:
  • pkg.installed
  • glances:
  • pip.installed:
  • - require:
  • - pkg: python-pip

  强制执行这个状态:


  • # salt '*' state.sls glances
  • ...
  • minion1.vpsee.com:
  • ----------
  • State: - pip
  • Name:      glances
  • Function:  installed
  • Result:    True
  • Comment:   Package was successfully installed
  • Changes:   Glances==1.7.1: Installed
  • ...

运维网声明 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-143871-1-1.html 上篇帖子: Saltstack:Crontab部署 下篇帖子: Hadoop (CDH4发行版)集群部署 (部署脚本,namenode高可用,hadoop管理)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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