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模板,编写的时候要注意格式,缩进和空格。
转载于:https://blog.51cto.com/warcraft3/1362831