运维自动化 SaltStack

SaltStack介绍:(略)

设置epel

rpm -ivh 'http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm'

yum安装masterminion

Master主机安装:

[root@wdds_1 yum.repos.d]# yum install salt-master

正在安装:

 salt-master                           noarch     2015.5.3-3.el6           epel      965 k

为依赖而安装:

 m2crypto                              x86_64     0.20.2-9.el6            base       471 k

 openpgm                               x86_64     5.1.118-3.el6           epel       165 k

 python-babel                          noarch     0.9.4-5.1.el6           base       1.4 M

 python-backports                       x86_64    1.0-3.el6.centos         extras    5.3 k

 python-backports-ssl_match_hostname    noarch     3.4.0.2-4.el6.centos     extras     13 k

 python-chardet                         noarch    2.0.1-1.el6.centos       extras     225k

 python-jinja2                          x86_64    2.2.1-2.el6_5            base      466 k

 python-msgpack                         x86_64    0.4.6-1.el6              epel       69 k

 python-ordereddict                     noarch    1.1-2.el6.centos         extras     7.7 k

 python-requests                        noarch    1.1.0-4.el6.centos       extras      71 k

 python-six                            noarch     1.7.3-1.el6.centos       extras     27 k

 python-urllib3                         noarch    1.5-7.el6.centos         extras     41 k

 python-zmq                            x86_64     14.3.1-1.el6            epel       467 k

 salt                                  noarch     2015.5.3-3.el6          epel       4.1 M

 zeromq3                               x86_64     3.2.5-1.el6             epel       338 k

 

Minion主机安装:

[root@wdds_2 yum.repos.d]# yum install salt-minion

启动salt

[root@wdds_1 6]# service salt-master start
Starting salt-master daemon:                               [
确定]
[
root@wdds_1 6]# netstat -ntpl
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:53331               0.0.0.0:*                   LISTEN      1786/rpc.statd      
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      2000/sshd           
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1852/cupsd          
tcp        0      0 0.0.0.0:4505                0.0.0.0:*                   LISTEN      2808/python2.6      
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      2338/master         
tcp        0      0 0.0.0.0:4506                0.0.0.0:*                   LISTEN      2822/python2.6      
tcp        0      0 127.0.0.1:6010              0.0.0.0:*                   LISTEN      2507/sshd           
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1738/rpcbind        
tcp        0      0 :::39634                    :::*                        LISTEN      1786/rpc.statd      
tcp        0      0 :::22                       :::*                        LISTEN      2000/sshd           
tcp        0      0 ::1:631                     :::*                        LISTEN      1852/cupsd          
tcp        0      0 ::1:25                      :::*                        LISTEN      2338/master         
tcp        0      0 ::1:6010                    :::*                        LISTEN      2507/sshd           
tcp        0      0 :::873                      :::*                        LISTEN      2021/xinetd         
tcp        0      0 :::111                      :::*                        LISTEN      1738/rpcbind  

[root@wdds_1 6]# ps aux |grep salt
root       2806  0.0  2.6 368028 21072 ?        S    23:39   0:00 /usr/bin/python2.6 /usr/bin/salt-master -d
root       2807  3.1  3.5 475152 28936 ?        Sl   23:39   0:00 /usr/bin/python2.6 /usr/bin/salt-master -d
root       2808  0.0  2.6 454052 21440 ?        Sl   23:39   0:00 /usr/bin/python2.6 /usr/bin/salt-master -d
root       2809  0.5  2.8 454052 22828 ?        Sl   23:39   0:00 /usr/bin/python2.6 /usr/bin/salt-master -d
root       2810  0.0  2.5 368028 20744 ?        S    23:39   0:00 /usr/bin/python2.6 /usr/bin/salt-master -d
root       2815  9.8  4.0 1150132 32560 ?       Sl   23:39   0:02 /usr/bin/python2.6 /usr/bin/salt-master -d
root       2816 10.6  4.0 1150136 32560 ?       Sl   23:39   0:02 /usr/bin/python2.6 /usr/bin/salt-master -d
root       2817 10.8  4.0 1150136 32568 ?       Sl   23:39   0:02 /usr/bin/python2.6 /usr/bin/salt-master -d
root       2818 10.9  4.0 1150140 32564 ?       Sl   23:39   0:02 /usr/bin/python2.6 /usr/bin/salt-master -d
root       2821 11.7  4.0 1150144 32572 ?       Sl   23:39   0:03 /usr/bin/python2.6 /usr/bin/salt-master -d
root       2822  0.1  2.6 757172 21628 ?        Sl   23:39   0:00 /usr/bin/python2.6 /usr/bin/salt-master -d
root       3271  0.0  0.1 103256   840 pts/0    R+   23:39   0:00 grep salt

master: 10.0.0.61

 

masterminion配置文件说明:

 

saltstack 简单使用

[root@wdds_1 ~]# salt-key -L      查看当前的key信息
Accepted Keys:
Denied Keys:
Unaccepted Keys:
wdds_2
wdds_3
Rejected Keys:
[
root@wdds_1 ~]# salt-key -a wdds_2   接受单个主机  (-d  删除)
The following keys are going to be accepted:
Unaccepted Keys:
wdds_2
Proceed? [n/Y] Y
Key for minion wdds_2 accepted.
[
root@wdds_1 ~]# salt-key -A      接收所有主机(-D  删除所有)
The following keys are going to be accepted:
Unaccepted Keys:
wdds_3
Proceed? [n/Y] y
Key for minion wdds_3 accepted.

[root@wdds_1 ~]# salt-key 
Accepted Keys:
wdds_2
wdds_3
Denied Keys:
Unaccepted Keys:
Rejected Keys:

测试

[root@wdds_1 ~]# salt '*' cmd.run 'echo helloworld'
wdds_3:
    helloworld
wdds_2:
    helloworld

远程执行命令测试

[root@wdds_1 ~]# salt '*' cmd.run 'uptime'           

wdds_2:

    20:00:26 up  1:05,  1 user, load average: 0.17, 0.06, 0.01

根据被控主机的grains信息进行匹配过滤

[root@wdds_1 ~]# salt -G 'os:Centos'test.ping

wdds_2:

True

显示被控主机的操作系统类型

[root@wdds_1 ~]#  salt '*' grains.item os

wdds_2:

   ----------

   os:

       CentOS

 

[root@wdds_1 ~]#  salt '*' grains.item  查看minion主机grains信息

远程代码执行测试

[root@wdds_1 ~]# salt '*' cmd.exec_codepython 'import sys; print sys.version'

wdds_2:

   2.6.6 (r266:84292, Jul 23 2015, 15:22:56)

   [GCC 4.4.7 20120313 (Red Hat 4.4.7-11)]

常用模块介绍
(1)
cp模块(实现远程文件、目录的复制,以及下载URL文件等操作)
##
将主服务器file_roots指定位置下的目录复制到被控主机
# salt '*' cp.get_dir salt://hellotest /data

 

##将主服务器file_roots指定位置下的文件复制到被控主机
# salt '*' cp.get_file salt://hellotest/rocketzhang /root/rocketzhang

 

## 下载指定URL内容到被控主机指定位置
# salt '*' cp.get_url 
http://xxx.xyz.com/download/0/files.tgz /root/files.tgz

 

(2)cmd模块(实现远程的命令行调用执行)
# salt '*' cmd.run 'netstat -ntlp'

 

(3)cron模块(实现被控主机的crontab操作)
##
为指定的被控主机、root用户添加crontab信息
# salt '*' cron.set_job root '*/5' '*' '*' '*' '*' 'date >/dev/null2>&1'
# salt '*' cron.raw_cron root

 

## 删除指定的被控主机、root用户的crontab信息
# salt '*' cron.rm_job root 'date >/dev/null 2>&1'
# salt '*' cron.raw_cron root

 

(4)dnsutil模块(实现被控主机通用DNS操作)
##
为被控主机添加指定的hosts主机配置项
# salt '*' dnsutil.hosts_append /etc/hosts 127.0.0.1 rocketzhang.qq.com

 

(5)file模块(被控主机文件常见操作,包括文件读写、权限、查找、校验等)
# salt '*' file.get_sum /etc/resolv.conf md5
# salt '*' file.stats /etc/resolv.conf
更多功能可以看文档哈 ^_^

 

(6)network模块(返回被控主机网络信息)
# salt '*' network.ip_addrs
# salt '*' network.interfaces
更多功能可以看文档哈 ^_^

 

(7)pkg包管理模块(被控主机程序包管理,如yumapt-get等)
# salt '*' pkg.install nmap
# salt '*' pkg.file_list nmap

 

(8)service 服务模块(被控主机程序包服务管理)
# salt '*' service.enable crond
# salt '*' service.disable crond

# salt '*' service.status crond
# salt '*' service.stop crond
# salt '*' service.start crond
# salt '*' service.restart crond
# salt '*' service.reload crond

(9)、更多功能
更多的功能,比如:grainspillarstatesmodulesreturnerrunnersreactor等,还有如下高级命令的使用,以及模板配置的渲染、扩展模块的二次开发等,可以自己去深入学习哈。

 

 

附录
http://docs.saltstack.com/en/latest/ref/modules/all/index.html
http://docs.saltstack.com/en/latest/ref/modules/index.html
http://www.saltstack.cn/projects/cssug-kb/wiki
http://salt-api.readthedocs.org/en/latest/
http://xiaorui.cc/category/saltstack/
http://www.shencan.net/index.php/category/%e8%87%aa%e5%8a%a8%e5%8c%96%e8%bf%90%e7%bb%b4/saltstack/
http://liuping0906.blog.51cto.com/2516248/d-13
http://lixcto.blog.51cto.com/4834175/d-1
http://blog.coocla.org/category/saltstack
http://pengyao.org/

 

资源站点:
https://github.com/saltstack/
https://github.com/saltstack-formulas
https://github.com/cssug