centos 6.x 安装并使用saltstack
1.安装
环境包
yum -y install python-crypto m2crypto PyYAML python-mako python-setuptools Cython
安装EPEL源
wget -c http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
然后使用yum安装
yum -y install salt-master //master
yum -y install salt-minion //client
2.基本配置
master端:
interface: 0.0.0.0 //侦听地址
publish_port: 4505 //salt的消息发布系统
user: root //salt使用的用户
max_open_files: 100000 //salt最大文件打开数
worker_threads: 5 //salt启动时的线程数,如果master运行慢,增加线程数
ret_port: 4506 //salt用来验证和任务处理的端口,即client连接master的端口
auto_accept: True //默认为false,这个是自动认证,不打开需要用salt-key -A 命令来进行手动认证
root_dir: / //家目录
pki_dir: /etc/salt/pki/master //这个目录用来存放公钥
keep_jobs: 24 //任务被缓存的时间,以小时为单位
timeout: 5 //默认超时时间
state_top: top.sls
file_roots: //
base:
- /srv/salt
pillar_roots:
base:
- /src/pillar
log_file: /var/log/salt/master //日志位置
log_level: debug //日志级别,默认为warning
minion端:
master: 192.168.1.1 //这个是salt master端的ip或者域名都可以
id:1 //标识,这台minion在salt master上的标识,可以随便使用,推荐使用这种方法将id写死。还有一种方法是使用hostname来进行标识。
master_port: 4506 //master上用来认证和任务返回的端口
user:root //运行salt的用户
pidfile: /var/run/salt-minion.pid //pid文件
pki_dir: /etc/salt/pki/minion //pki公钥目录
cachedir: /car/cache/salt/minion //缓存目录
log_file: /var/log/salt/minion //日志文件
log_level: debug //日志级别,默认为warning
3.启动
/etc/init.d/salt-master start
/etc/init.d/salt-minion start
启动完成后查看minion端的log
会发现错误:
2014-02-24 21:27:25,523 [salt.crypt ][ERROR ] The Salt Master has cached the public key for this node, this salt minion will wait for 10 seconds before attempting to re-authenticate
这是由于auto_accept: True这个值设置为false,这个时候需要在master端执行salt-key -A 来验证
4。基本使用
salt 'id' cmd.run 'command'
id是在minion中设置的值,cmd.run是salt的方法,command是要执行的命令
salt对单台执行命令:
[root@localhost ~]# salt '152' cmd.run 'uname -a'
152:
Linux cs.test.com 2.6.32-358.el6.i686 #1 SMP Thu Feb 21 21:50:49 UTC 2013 i686 i686 i386 GNU/Linux
[root@localhost ~]#
按组批量执行命令:
[root@localhost srv]# salt -N group1 test.ping
152:
True
121:
True
[root@localhost srv]#
做法:
编辑/etc/salt/master文件
找到nodegroups:取消掉注释
配置
group1: 'L@152,121' //这里 group1是标识符,152和121是client端的id标识符,L代表是有多个客户端。另外,注意缩进,group1和nodegroups不能并齐,客户端ID用,分隔
即:
nodegroups:
group1: 'L@152,121'
如果要对所有客户端执行,直接使用salt '*' 即可
附:group2: 'G@os:debian'这个的意思是针对系统为debian的操作系统
执行命令可以为,salt -N group2 test.ping
或者用
salt -G 'os:centos' test.ping 来匹配系统为centos的机器执行test.ping测试
salt批量下发文件:
使用salt-cp这个命令来完成
[root@localhost ~]# salt-cp -N group1 testfile /tmp/
{'121': {'/tmp/testfile': True}, '152': {'/tmp/testfile': True}}
成功下发
5.salt sls文件定制系统
方法:
在配置文件中,我们定义的文件目录是在/srv/salt下,在/srv/salt下建立sls文件
这里以nginx为实例
[root@localhost salt]# cat nginx.sls
nginx:
pkg:
- installed
[root@localhost salt]#
[root@localhost salt]# salt '152' state.sls nginx
152:
----------
State: - pkg
Name: nginx
Function: installed
Result: True
Comment: The following packages were installed/updated: nginx.
Changes: nginx: { new : 1.4.5-1.el6.ngx
old :
}
Summary
------------
Succeeded: 1
Failed: 0
------------
Total: 1
[root@localhost salt]#
如果minion端没有安装nginx的话,那么salt会在id为152的client上安装nginx,并返回成功的提示。
注意,由于sls文件是遵从yaml模板和jinja2模板,编写的时候要注意格式,缩进和空格。
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com