SaltStack快速入门(2)-SaltStack部署
For RHEL/CentOS 6rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel/5/x86_64/epel-release-5-4.noarch.rpm
Salt Master安装:rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
Salt Master启动:[root@master ~]#yum install -y salt-master python-setproctitle
Salt Master加入开机启动:[root@master ~]#/etc/init.d/salt-master start
Salt Minion安装:[root@master ~]# chkconfig salt-master on
Salt Minion 启动:[root@minion ~]#yum install -y salt-minion
Salt Minion 加入开机启动:[root@minion ~]#/etc/init.d/salt-minion start
服务端日志: [root@master ~]# tail -f /var/log/salt/master 客户端日志: [root@minion ~]# tail -f /var/log/salt/minion Ubuntu下安装SaltStack 添加salt仓库[root@minion ~]#chkconfig salt-minion on
安装mastersudo add-apt-repository ppa:saltstack/salt sudo apt-get update
安装minionsudo apt-get install salt-master
Windows下安装Salt Minion 目前SaltStack的Master 还无法运行在windows 上,也许永远都不会。但是可以运行Minion。 Minion在Windows下安装: 在https://docs.saltstack.com/downloads/ 下载最新相对应的Salt-Minion-*-Setup.exe 直接运行安装即可。同时也可以在cmd窗口,通过命令安装:sudo apt-get install salt-minion
其他操作系统安装 本文的案例环境是CentOS。可以通过以下网址获取到其它更多操作系统的安装方法: http://docs.saltstack.com/en/latest/topics/installation/index.html Salt配置文件 Salt Master配置 Master端的配置是修改/etc/salt下master配置文件。以下是Master端常用的配置。 interface: 指定bind 的地址(默认为0.0.0.0) publish_port: 指定发布端⼝(默认为4505) ret_port: 指定结果返回端⼝, 与minion配置⽂件中的master_port对应(默认为4506) user: 指定master 进程的运⾏⽤户, 如果调整, 则需要调整部分目录的权限(默认为root) timeout: 指定timeout时间, 如果minion规模庞⼤或⺴络状况不好,建议增⼤该值(默认5s) keep_jobs: 默认情况下, minion 会执⾏结果会返回master, master会缓存到本地的cachedir ⺫录, 该参数指定缓存多⻓时间, 以供查看之前的执⾏结果, 会占⽤磁盘空间(默认为24h) job_cache: master 是否缓存执⾏结果, 如果规模庞⼤(超过5000台), 建议使⽤其他⽅式来存储jobs, 关闭本选项(默认为True) file_recv : 是否允许minion传送⽂件到master 上(默认是Flase) file_roots: 指定file server⺫录, 默认为: file_roots: base: - /srv/salt pillar_roots : 指定pillar ⺫录, 默认为: pillar_roots: base: - /srv/pillar log_level: 执⾏⽇志级别, ⽀持的⽇志级别有'garbage', 'trace', 'debug', info', 'warning', 'error', ‘critical ’ ( 默认为’warning’) Salt Minion配置 Minion端配置非常简单,一般只需要修改两个配置即可。 [root@minion ~]# vim /etc/salt/minionSalt-Minion-*-Setup.exe /S /master=master-ip /minion-name=minion-name
Minion常用配置 master: 指定master 主机(默认为salt) master_port: 指定认证和执⾏结果发送到master 的哪个端⼝, 与master 配置⽂件中的ret_port 对应(默认 为4506) id: 指定本minion的标识. salt内部使⽤id 作为标识(默认为主机名) user: 指定运⾏minion的⽤户. 由于安装包,启动服务等操作需要特权⽤户, 推荐使⽤root( 默认为root) cache_jobs : minion 是否缓存执⾏结果(默认为False) backup_mode: 在⽂件操作(file.managed 或file.recurse) 时, 如果⽂件发⽣变更,指定备份⺫标. 当前有效 的值为minion, 备份在cachedir/file_backups⺫录下, 以原始⽂件名称加时间戳来命名(默认为Disabled) providers : 指定模块对应的providers, 如在RHEL系列中, pkg对应的providers 是yumpkg5 renderer: 指定配置管理系统中的渲染器(默认值为:yaml_jinja ) file_client : 指定file clinet 默认去哪⾥(remote 或local) 寻找⽂件(默认值为remote) loglevel: 指定⽇志级别(默认为warning) tcp_keepalive : minion 是否与master 保持keepalive 检查, zeromq3 以下版本存在keepalive bug,会导致某些情况下连接异常后minion⽆法重连master. 建议有条件的话升级到zeromq 3以上版本(默认为True) SaltStack认证 Salt的数据传输是通过AES加密的,Master和Minion之间在通信之前,需要进行认证。通过认证的方式保证安全性,完成一次认证后,Master就可以自由的控制Minion来完成各项工作了。了解了认证的详细有助于我们在日常管理中管理Minion,已经及时处理问题。master: 192.168.56.111 (修改master为master的IP地址) id: (客户端的id。默认不设置会取客户端的FQDN主机名)
- 1.minion在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion里面设置)下自动生成minion.pem(private key)和minion.pub(public key),然后将minion.pub发送给master。
- 2.master在第一次启动时,会在/etc/salt/pki/master下自动生成master.pem和master.pub。在接收到minion的public key后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion id命名的public key, 客户端会保存一份master的public key,在/etc/salt/pki/minion_master.pub
- 3.通过两个步骤的验证,master就能对minion发送指令了。
例:查看需要认证的Minion: [root@master ~]# salt-key Accepted Keys: Unaccepted Keys: minion.example.com Rejected Keys: 认证Minion: [root@master ~]# salt-key --accept=* The following keys are going to be accepted: Unaccepted Keys: minion.example.com Proceed? [n/Y] Y Key for minion minion.example.com accepted. 小提示:无论是accept还是delete都支持Linux的Shell通配符。-a ACCEPT, --accept=ACCEPT Accept the following key -A, --accept-all Accept all pending keys -r REJECT, --reject=REJECT Reject the specified public key -R, --reject-all Reject all pending keys -d DELETE, --delete=DELETE Delete the named key -D, --delete-all Delete all keys