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

[经验分享] python第三方库系列之二十--批量机器配置管理库SaltStack

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-26 11:37:03 | 显示全部楼层 |阅读模式
我们的服务器由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, Func, Rundeck, AnsibleWorks, SaltStack, …)

        SaltStack采用zeromq消息队列进行通信,和Puppet/Chef比起来,SaltStack速度快得多。还有一点我们喜欢SaltStack的地方是它是Python写的,比Puppet/Chef这些Ruby工具更接近我们的能力圈。

一、安装主控服务器(salt master)
和大多数类似工具一样,SaltStack需要在一台机器(主控)上安装服务器端软件(SaltStack称之为salt master),在多台机器(受控)上安装客户端软件(SaltStack称之为salt minion)。在主控机器上给下属(受控)发命令,在受控机器上接受和执行上级(主控)的命令。
(1.1)在Ubuntu上安装salt master:
$ sudo add-apt-repository ppa:saltstack/salt
$ sudo apt-get update
$ sudo apt-get install salt-master
(1.2)在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)
(1.1)在Ubuntu上安装salt minion:
$ sudo add-apt-repository ppa:saltstack/salt
$ sudo apt-get update
$ sudo apt-get install salt-minion
(1.2)在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
(2)安装完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-143846-1-1.html 上篇帖子: 自动化运维工具SaltStack详细部署 下篇帖子: Pillar Walkthrough
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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