DevOps学院

DevOps学院

中国新一代IT在线教育平台
运维知识体系

运维知识体系

运维知识体系总结,持续更新,欢迎转载。
缓存知识体系

缓存知识体系

运维知识体系之缓存,分层多级缓存体系。
速云科技

速云科技

DevOps咨询、企业内训、落地解决方案。

saltstack的file.managed模块下的源source理念不清楚

SaltStack赵班长 回复了问题 • 2 人关注 • 1 个回复 • 91 次浏览 • 2018-05-08 19:04 • 来自相关话题

关于saltstack openstack的安装

SaltStack赵班长 回复了问题 • 2 人关注 • 2 个回复 • 1314 次浏览 • 2018-05-04 19:31 • 来自相关话题

salt-cloud创建云主机失败

回复

SaltStack匿名用户 发起了问题 • 0 人关注 • 0 个回复 • 540 次浏览 • 2017-06-15 17:21 • 来自相关话题

CentOS 5.8升级到Salt-minion-2016.11

SaltStack赵班长 发表了文章 • 0 个评论 • 953 次浏览 • 2017-01-22 11:50 • 来自相关话题

SaltStack 2016.11版本发布了。小伙伴们,赶紧升级吧,其中需要注意的是老的版本,如CentOS 5.8升级的时候一定不要忘记升级zmq 。

建议部署salt-ssh,使用salt-ssh进行minion的升级等管理

使用官方的源:wget https://repo.saltstack.com/yum ... h.rpm
sudo rpm -ivh salt-repo-latest-1.el5.noarch.rpm
rm -f salt-repo-latest-1.el5.noarch.rpm升级开始:yum install salt-minion python26-zmq -y

注意:一定要升级python26-zmq,不然无法启动。 查看全部
SaltStack 2016.11版本发布了。小伙伴们,赶紧升级吧,其中需要注意的是老的版本,如CentOS 5.8升级的时候一定不要忘记升级zmq 。


建议部署salt-ssh,使用salt-ssh进行minion的升级等管理


使用官方的源:
wget https://repo.saltstack.com/yum ... h.rpm
sudo rpm -ivh salt-repo-latest-1.el5.noarch.rpm
rm -f salt-repo-latest-1.el5.noarch.rpm
升级开始:
yum install salt-minion python26-zmq -y


注意:一定要升级python26-zmq,不然无法启动。


《中国SaltStack用户组》2016技术分享活动【免费】

SaltStack赵班长 发表了文章 • 2 个评论 • 1172 次浏览 • 2016-11-09 15:16 • 来自相关话题

虽然是免费活动,但是我们很认真,请确认能够准时参加后报名!

活动介绍【免费社区活动,友好交流,相互学习!】






分享嘉宾【纯干货,无尿点!】







报名地址: http://www.bagevent.com/event/272186 查看全部
虽然是免费活动,但是我们很认真,请确认能够准时参加后报名!

活动介绍【免费社区活动,友好交流,相互学习!】

1708317507999.jpg


分享嘉宾【纯干货,无尿点!】

1714398437999.jpg



报名地址: http://www.bagevent.com/event/272186

基于开源实现的自动化扩容-简图

SaltStack赵班长 发表了文章 • 1 个评论 • 5185 次浏览 • 2016-04-22 21:17 • 来自相关话题

好久没有写文章了,下午因为在群里有人讨论自动化扩容的话题,就顺手画了张图,直接上图。不说话。

        涉及开源项目:Zabbix、Saltstack、Etcd、Haproxy、Keepalived、Mesos、Marathon、Docker、Salt-cloud、Etcd、OpenStack。注:选用etcd因为saltstack刚好有一个ectd_pillar。






  查看全部
好久没有写文章了,下午因为在群里有人讨论自动化扩容的话题,就顺手画了张图,直接上图。不说话。

        涉及开源项目:Zabbix、Saltstack、Etcd、Haproxy、Keepalived、Mesos、Marathon、Docker、Salt-cloud、Etcd、OpenStack。注:选用etcd因为saltstack刚好有一个ectd_pillar。


auto.jpg

 

SaltStack快速入门(5)-SaltStack与ZeroMQ

SaltStack赵班长 发表了文章 • 2 个评论 • 3749 次浏览 • 2015-10-27 22:46 • 来自相关话题

    我们进行自动化运维大多数情况下,是我们的服务器数量已经远远超过人工SSH维护的范围,SaltStack可以支数以千计,甚至更多的服务器。这些性能的提供主要来自于ZeroMQ,因为SaltStack底层是基于ZeroMQ进行高效的网络通信。ZMQ用于node与node间的通信,node可以是主机也可以是进程。

ZeroMQ简介
  ZeroMQ(我们通常还会用ØMQ , 0MQ, zmq等来表示)是一个简单好用的传输层,像框架一样的一个套接字库,他使得Socket编程更加简单、简洁和性能更高。它还是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。
发布与订阅
ZeroMQ支持Publish/Subscribe,即发布与订阅模式,我们经常简称Pub/Sub。






 Salt Master运行两个网络服务,其中一个是ZeroMQ PUB系统,默认监听4505端口。可以通过修改/etc/salt/master配置文件的publish_port参数设置。它是salt的消息发布系统,如果查看4505端口,会发现所有的Minion连接到Master的4505端口,TCP状态持续保持为ESTABLISHED。

[root@ master]# lsof -i:4505

    这样Salt Master发布一个消息,所有连接到4505这个Pub端口上的Minion都会接收到这个消息。然后每个Minion会再判断自己是否需要执行这个消息。

请求与响应
ZeroMQ支持Request-Reply,即请求与响应模式,我们经常简称REQ/REP。





     Salt Master运行的第二个网络服务就是ZeroMQ REP系统,默认监听4506端口,可以通过修改/etc/salt/master配置文件的ret_port参数设置。它是salt客户端与服务端通信的端口。比如说Minion执行某个命令后的返回值就是发送给Master的4506这个REP端口
由于我们在最初安装了python-setproctitle软件包,所以我们可以直接看到Salt Master启动的进程的名称。

[root@ops-node1 ~]# ps aux | grep salt
/usr/bin/salt-master -d ProcessManager  #中心进程管理器
/usr/bin/salt-master -d _clear_old_jobs  #清除旧的Jobs文件及更新fileserver
/usr/bin/salt-master -d Publisher       #将任务PUB到Minion端
/usr/bin/salt-master -d EventPublisher  #Event Publisher进程
/usr/bin/salt-master -d ReqServer_ProcessManager #ReqServer进程管理器
/usr/bin/salt-master -d MWorker  #工作进程
/usr/bin/salt-master -d MWorker  #工作进程
/usr/bin/salt-master -d MWorker  #工作进程
/usr/bin/salt-master -d MWorker  #工作进程
/usr/bin/salt-master -d MWorker  #工作进程
/usr/bin/salt-master -d MWorkerQueue #将Ret接口(ROUTER)数据转发到Worker(DEALER)
  查看全部
    我们进行自动化运维大多数情况下,是我们的服务器数量已经远远超过人工SSH维护的范围,SaltStack可以支数以千计,甚至更多的服务器。这些性能的提供主要来自于ZeroMQ,因为SaltStack底层是基于ZeroMQ进行高效的网络通信。ZMQ用于node与node间的通信,node可以是主机也可以是进程。

ZeroMQ简介
  ZeroMQ(我们通常还会用ØMQ , 0MQ, zmq等来表示)是一个简单好用的传输层,像框架一样的一个套接字库,他使得Socket编程更加简单、简洁和性能更高。它还是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。
发布与订阅
ZeroMQ支持Publish/Subscribe,即发布与订阅模式,我们经常简称Pub/Sub。

1.png


 Salt Master运行两个网络服务,其中一个是ZeroMQ PUB系统,默认监听4505端口。可以通过修改/etc/salt/master配置文件的publish_port参数设置。它是salt的消息发布系统,如果查看4505端口,会发现所有的Minion连接到Master的4505端口,TCP状态持续保持为ESTABLISHED。


[root@ master]# lsof -i:4505


    这样Salt Master发布一个消息,所有连接到4505这个Pub端口上的Minion都会接收到这个消息。然后每个Minion会再判断自己是否需要执行这个消息。

请求与响应
ZeroMQ支持Request-Reply,即请求与响应模式,我们经常简称REQ/REP。
2.png


     Salt Master运行的第二个网络服务就是ZeroMQ REP系统,默认监听4506端口,可以通过修改/etc/salt/master配置文件的ret_port参数设置。它是salt客户端与服务端通信的端口。比如说Minion执行某个命令后的返回值就是发送给Master的4506这个REP端口
由于我们在最初安装了python-setproctitle软件包,所以我们可以直接看到Salt Master启动的进程的名称。


[root@ops-node1 ~]# ps aux | grep salt
/usr/bin/salt-master -d ProcessManager  #中心进程管理器
/usr/bin/salt-master -d _clear_old_jobs  #清除旧的Jobs文件及更新fileserver
/usr/bin/salt-master -d Publisher       #将任务PUB到Minion端
/usr/bin/salt-master -d EventPublisher  #Event Publisher进程
/usr/bin/salt-master -d ReqServer_ProcessManager #ReqServer进程管理器
/usr/bin/salt-master -d MWorker  #工作进程
/usr/bin/salt-master -d MWorker  #工作进程
/usr/bin/salt-master -d MWorker  #工作进程
/usr/bin/salt-master -d MWorker  #工作进程
/usr/bin/salt-master -d MWorker  #工作进程
/usr/bin/salt-master -d MWorkerQueue #将Ret接口(ROUTER)数据转发到Worker(DEALER)
 


SaltStack快速入门(4)-SaltStack配置管理

SaltStack赵班长 发表了文章 • 3 个评论 • 2908 次浏览 • 2015-10-27 22:42 • 来自相关话题

      Salt使用State模块文件进行配置管理,使用YAML编写,以.sls结尾。如果进行配置管理首先需要再Master的配置文件中指定”file roots”的选项,Salt支持环境的配置,比如开发环节、测试环境、生产环境,但是base环境是必须的。而且Base环境必须包含入口文件top.sls。

 第一步:设置file_roots
修改Master配置文件,指定File_roots。

[root@master ~]# vim /etc/salt/master
file_roots:
   base:
     - /srv/salt

创建相应的目录
[root@master ~]# mkdir -p /srv/salt
重启Salt Master
[root@master ~]# /etc/init.d/salt-master restart
Stopping salt-master daemon:                              [  OK  ]
Starting salt-master daemon:                               [  OK  ]

 第二步:设置top.sls
在top.sls入口文件设置环境(如生产、开发、测试对应不同的minion和模块)。

[root@master ~]# vim /srv/salt/top.sls
base:
  '*':
   - apache

解释:所有的Minion均执行base目录下的init模块下的pkg-init.sls。我们可以把很多的sls放在一个目录中,方便管理。在top.sls只需要指定目录结构即可。

 第三步:编写状态文件

[root@master ~]# vim /srv/salt/apache.sls
apache-install:
  pkg.installed:
    - names:
      - httpd
      - httpd-devel
apache-service:
  service.running:
    - enable: True
    - reload: True

第四步:执行状态
[root@master ~]# salt '*' state.highstate

根据上面的设置,执行完状态后。Salt会检查Minion上是否有上面编写的三个软件包。如果没有就会自动使用Yum安装上。 查看全部
      Salt使用State模块文件进行配置管理,使用YAML编写,以.sls结尾。如果进行配置管理首先需要再Master的配置文件中指定”file roots”的选项,Salt支持环境的配置,比如开发环节、测试环境、生产环境,但是base环境是必须的。而且Base环境必须包含入口文件top.sls。

 第一步:设置file_roots
修改Master配置文件,指定File_roots。


[root@master ~]# vim /etc/salt/master
file_roots:
   base:
     - /srv/salt


创建相应的目录
[root@master ~]# mkdir -p /srv/salt
重启Salt Master
[root@master ~]# /etc/init.d/salt-master restart
Stopping salt-master daemon:                              [  OK  ]
Starting salt-master daemon:                               [  OK  ]

 第二步:设置top.sls
在top.sls入口文件设置环境(如生产、开发、测试对应不同的minion和模块)。


[root@master ~]# vim /srv/salt/top.sls
base:
  '*':
   - apache


解释:所有的Minion均执行base目录下的init模块下的pkg-init.sls。我们可以把很多的sls放在一个目录中,方便管理。在top.sls只需要指定目录结构即可。

 第三步:编写状态文件


[root@master ~]# vim /srv/salt/apache.sls
apache-install:
  pkg.installed:
    - names:
      - httpd
      - httpd-devel
apache-service:
  service.running:
    - enable: True
    - reload: True


第四步:执行状态
[root@master ~]# salt '*' state.highstate

根据上面的设置,执行完状态后。Salt会检查Minion上是否有上面编写的三个软件包。如果没有就会自动使用Yum安装上。

SaltStack快速入门(3)-SaltStack远程执行

SaltStack赵班长 发表了文章 • 0 个评论 • 2637 次浏览 • 2015-10-27 22:39 • 来自相关话题

      在前面3个小节我们介绍了SaltStack并且讲解了Salt的安装部署。相信你现在已经只有拥有一个Master和至少一个Minion。我们能做点什么呢?下面的两个章节,带领读者快速的使用SaltStack的远程执行和配置管理功能。

    远程执行时SaltStack的核心功能之一。主要使用salt模块可以批量给选定的Minion端执行相应的命令,并获得返回结果。让我们执行第一个Salt命令。

[root@master ~]# salt '*' test.ping
minion.example.com:
True

    上面的命令用来查看有哪些Minion节点连接到Master。* 指的是选定的目标Minion,很显然代表所有。就是所有Minion端了。test.ping是salt远程执行的一个模块。(注意:这并不是一个ICMP ping。)

SaltStack可以使用cmd.run模块远程执行shell命令,使用cmd.run。如:让 Minion节点运行uptime命令。

[root@master ~]# salt '*' cmd.run 'uptime'
minion.example.com:
     18:00:04 up 8 min,  1 user,  load average: 0.00, 0.05, 0.03

      SaltStack提供了大量的命令模块可以使用。更详细远程执行的相关知识请参考第九章。好吧,也许你不想掌握更多的命令,那么尽情的用cmd.run吧。但是由于cmd.run可以执行所有的命令,所以不建议在生产环境中使用cmd.run。或者使用ACL来控制让哪些用户可以使用cmd.run。 查看全部
      在前面3个小节我们介绍了SaltStack并且讲解了Salt的安装部署。相信你现在已经只有拥有一个Master和至少一个Minion。我们能做点什么呢?下面的两个章节,带领读者快速的使用SaltStack的远程执行和配置管理功能。

    远程执行时SaltStack的核心功能之一。主要使用salt模块可以批量给选定的Minion端执行相应的命令,并获得返回结果。让我们执行第一个Salt命令。


[root@master ~]# salt '*' test.ping
minion.example.com:
True


    上面的命令用来查看有哪些Minion节点连接到Master。* 指的是选定的目标Minion,很显然代表所有。就是所有Minion端了。test.ping是salt远程执行的一个模块。(注意:这并不是一个ICMP ping。)

SaltStack可以使用cmd.run模块远程执行shell命令,使用cmd.run。如:让 Minion节点运行uptime命令。


[root@master ~]# salt '*' cmd.run 'uptime'
minion.example.com:
     18:00:04 up 8 min,  1 user,  load average: 0.00, 0.05, 0.03


      SaltStack提供了大量的命令模块可以使用。更详细远程执行的相关知识请参考第九章。好吧,也许你不想掌握更多的命令,那么尽情的用cmd.run吧。但是由于cmd.run可以执行所有的命令,所以不建议在生产环境中使用cmd.run。或者使用ACL来控制让哪些用户可以使用cmd.run。

SaltStack快速入门(2)-SaltStack部署

SaltStack赵班长 发表了文章 • 2 个评论 • 3648 次浏览 • 2015-10-27 22:38 • 来自相关话题

SaltStack支持多种操作系统,如CentOS、RedHat、Debian、Ubuntu、FreeBSD、Solaris、Fedora、SuSe、Gentoo、MAC OS X、Archlinux等,以及Windows(仅支持Minion)。

 RHEL/CentOS下安装SaltStack
对于Centos和RedHat用户,使用yum安装时最直接和快捷的。首先需要安装EPEL仓库。
For RHEL/CentOS 5

rpm -ivh http://mirrors.ustc.edu.cn/fed ... h.rpm

For RHEL/CentOS 6

rpm -ivh http://dl.fedoraproject.org/pu ... h.rpm


Salt Master安装:

[root@master ~]#yum install -y salt-master python-setproctitle

Salt Master启动:

[root@master ~]#/etc/init.d/salt-master start

Salt Master加入开机启动:

[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

Salt Minion 加入开机启动:

[root@minion ~]#chkconfig salt-minion on


服务端日志:
[root@master ~]# tail -f /var/log/salt/master
客户端日志:
[root@minion ~]# tail -f /var/log/salt/minion

 Ubuntu下安装SaltStack
添加salt仓库

sudo add-apt-repository ppa:saltstack/salt     
sudo apt-get update    

安装master

sudo apt-get install salt-master    

安装minion

sudo apt-get install salt-minion

 Windows下安装Salt Minion
目前SaltStack的Master 还无法运行在windows 上,也许永远都不会。但是可以运行Minion。
Minion在Windows下安装:
在https://docs.saltstack.com/downloads/ 下载最新相对应的Salt-Minion-*-Setup.exe 直接运行安装即可。同时也可以在cmd窗口,通过命令安装:

Salt-Minion-*-Setup.exe /S /master=master-ip /minion-name=minion-name    

 其他操作系统安装
本文的案例环境是CentOS。可以通过以下网址获取到其它更多操作系统的安装方法:
http://docs.saltstack.com/en/l ... .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/minion

master: 192.168.56.111 (修改master为master的IP地址)
id: (客户端的id。默认不设置会取客户端的FQDN主机名)

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,已经及时处理问题。
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.pub3.通过两个步骤的验证,master就能对minion发送指令了。

 Master端Key认证
在上面一个小节已经提到了Master与Minion的认证方式,只有Master接受了Minion的Key后,才能进行管理。具体的认证命令为salt-key,常用的有如下命令。

-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

例:查看需要认证的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通配符。 查看全部
SaltStack支持多种操作系统,如CentOS、RedHat、Debian、Ubuntu、FreeBSD、Solaris、Fedora、SuSe、Gentoo、MAC OS X、Archlinux等,以及Windows(仅支持Minion)。

 RHEL/CentOS下安装SaltStack
对于Centos和RedHat用户,使用yum安装时最直接和快捷的。首先需要安装EPEL仓库。
For RHEL/CentOS 5


rpm -ivh http://mirrors.ustc.edu.cn/fed ... h.rpm


For RHEL/CentOS 6


rpm -ivh http://dl.fedoraproject.org/pu ... h.rpm



Salt Master安装:


[root@master ~]#yum install -y salt-master python-setproctitle


Salt Master启动:


[root@master ~]#/etc/init.d/salt-master start


Salt Master加入开机启动:


[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


Salt Minion 加入开机启动:


[root@minion ~]#chkconfig salt-minion on



服务端日志:
[root@master ~]# tail -f /var/log/salt/master
客户端日志:
[root@minion ~]# tail -f /var/log/salt/minion

 Ubuntu下安装SaltStack
添加salt仓库


sudo add-apt-repository ppa:saltstack/salt     
sudo apt-get update    


安装master


sudo apt-get install salt-master    


安装minion


sudo apt-get install salt-minion


 Windows下安装Salt Minion
目前SaltStack的Master 还无法运行在windows 上,也许永远都不会。但是可以运行Minion。
Minion在Windows下安装:
https://docs.saltstack.com/downloads/ 下载最新相对应的Salt-Minion-*-Setup.exe 直接运行安装即可。同时也可以在cmd窗口,通过命令安装:


Salt-Minion-*-Setup.exe /S /master=master-ip /minion-name=minion-name    


 其他操作系统安装
本文的案例环境是CentOS。可以通过以下网址获取到其它更多操作系统的安装方法:
http://docs.saltstack.com/en/l ... .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/minion


master: 192.168.56.111 (修改master为master的IP地址)
id: (客户端的id。默认不设置会取客户端的FQDN主机名)


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,已经及时处理问题。
  • 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发送指令了。


 Master端Key认证
在上面一个小节已经提到了Master与Minion的认证方式,只有Master接受了Minion的Key后,才能进行管理。具体的认证命令为salt-key,常用的有如下命令。


-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


例:查看需要认证的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通配符。