一、SaltStack介绍
1.1 saltstack简介:
saltstack是基于python开发的一套C/S架构配置管理工具,它的底层使用ZeroMQ消息队列pub/sub方式通信,使用SSL证书签发的方式进行认证管理。ZeroMQ使SaltStack能快速在成千上万台机器上进行各种操作,之前已经介绍过了puppet mco的框架,比较类似。而且采用RSA Key方式确认身份,传输采用AES加密,使传输的安全性得到保障。
saltstack是基于C/S架构的服务模式,服务器端叫做Master,客户端叫作Minion,并且有消息队列中的发布与订阅(pub/sub)服务模式,minion与master之间通过ZeroMQ消息队列通信。Master和Minion端都以守护进程的模式运行,一直监听配置文件里面定义的ret_port也就是4506端口(接收minion请求)和publish_port也就是4505端口(ZMQ的发布消息)。当minion运行时会自动连接到配置文件里面定义的Master地址ret_port端口进行连接认证。
如下图(salt-master端的4505和4506端口,被两个客户端(192.168.1.102,192.168.1.104)所连接。):
1.2salt的具体步骤如下:
第一步:salt stack的master与minion之间通过ZeroMq进行消息传递,使用了ZeroMq的发布-订阅模式,连接方式包括tcp,ipc。
第二步:salt命令,以ls查看为例,将cmd.run ls命令从salt.client.LocalClient.cmd_cli发布到master,获取一个Jobid,根据jobid获取命令执行结果。
第三步:master接收到命令后,将要执行的命令发送给客户端minion。
第四步:minion从消息总线上接收到要处理的命令,交给minion._handle_aes处理。
第五步:minion._handle_aes发起一个本地线程调用cmdmod执行ls命令。线程执行完ls后,调用minion._return_pub方法,将执行结果通过消息总线返回给master。
第六步:master接收到客户端返回的结果,调用master._handle_aes方法,将结果写的文件中。
第七步:salt.client.LocalClient.cmd_cli通过轮询获取Job执行结果,将结果输出到终端。
二、SaltStack安装
1.1 saltstack软件依赖
saltstack对于python版本和python模块有一定的要求。
Python | 版本大于2.6或版本小于3.0 |
msgpack-python | saltstack消息交换库 |
YAML | saltstack配置解析定义语法 |
Jinja2 | saltstack states配置模板 |
MarkupSafe | Python unicode转换库 |
apache-libcloud | saltstack对云架构编排库 |
Requests | HTTP Python库 |
ZeroMQ | saltstack消息系统 |
pyzmq | ZeroMQ Python库 |
PyCrypto | Python密码库 |
M2Crypto | Openssl Python包装库 |
1.2saltstack的安装(yum安装)
官网地址:https://docs.saltstack.com
Centos服务器安装地址:https://repo.saltstack.com/#rhel
第一步:指定官网yum源:
如果是Centos7系统: yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-1.el7.noarch.rpm
如果是Centos6系统: yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-1.el6.noarch.rpm
或者直接编写一个源文件:
# cat /etc/yum.repos.d/salt-latest.repo
[salt-latest]
name=SaltStack Latest Release Channel for RHEL/Centos $releasever
baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub
第二步:master端的安装:
#yum install salt-master -y
#yum install salt-minion -y
#yum install salt-ssh -y
#yum install salt-syndic -y
#yum install salt-cloud -y
#yum install salt-api -y
第三步:minion的安装
#yum install salt-minion -y
1.3master端的操作
这里先保持默认配置直接启动服务,后面再涉及到配置文件的修改。
# service salt-master restart
1.4客户端的操作
# cat /etc/salt/minion #修改配置文件(注意每个冒号后面都要跟一个空格,这是书写规范)
master: 192.168.1.101 #这里要指向salt-master服务器,可以是IP,也可以是域名,也可以是主机名,不过主机名就要写/etc/hosts了,如果用的是内部DNS服务器的话可以用主机名或者域名的形式。
id: zwidc_kvm_192.168.1.104 #这里定义后,master认证证书那里就以这个名称为主,默认这里是注释状态。个人比较偏向这里设置,因为机器众多外加主机业务的变化,我想这里的标识可以在初始化机器的时候就设置好而不受主机名以及主机名变化的影响,因为一般IP和机器类型和机器所在的机房是很难变化的,所以这里不设置的那么细化,方便管理工具的部署和管理。
注(这里有一个坑):
#上面这个图不陌生,这是编写puppet的时候的主机名,现在要搞salt环境了,我的主机名已经变成agent2.salt之类了,为啥master端那边收到的证书请求,还是旧主机名的形式呢,而且重启服务机器都没用。
这是因为你再没有设置id:这个唯一标识的情况下,默认用的就是主机名作为id的值,但是呢,你是先启动了minion服务,后改的主机名,这时候你不管怎么重启minion的服务都木有用了,这是因为一个文件。
是因为你启动minion服务后,会产生/etc/salt/minion_id ,而这个文件里面的内容不会因为你主机名的改变、服务的重启、机器的重启而改变,所以如果你的主机名发送了变化,想让master端那里的证书认证名称也跟着发送变化的话,就要删除/etc/salt/minion_id文件或者清空/etc/salt/minion_id文件里面的内容,然后重启minion服务。
#关于主机名的设置,个人的习惯是:ydidc-server-web-101-223-200-2.douyu, ydidc-docker-cache-101-223-200-3.douwan,类似于这种机房名称、主机类型是服务器还是虚拟机、机器业务类型、IP地址、公司域名后缀的形式。不建议用业务后面跟编号的形式,因为你加了编号,就有了顺序,但是机器所负责的业务可能要更换,机器可能要撤掉,那么你的编号就是不连贯乱的,但是IP具有唯一性,不会出现因为机器下架业务调整主机名变更造成看着不连贯很乱的现象,如果一个机房没有多网段可以直接后一位或者后两位。
#id: zwidc_kvm_192.168.1.104 #注意冒号后面要空一格,不然启动minion报错:ERROR: Unable to look-up config values for /etc/salt
# service salt-minion restart #设置完毕后重启minion服务
1.5master服务端设置
# salt-key -L #查看当前证书的签证情况(如果我们客户端的证书在未验证Unaccepted Keys: 的下面。)
Unaccepted Keys:
zwidc_kvm_192.168.1.104
# salt-key -a zwidc_kvm_192.168.1.104 -y #通过此证书的验证
# salt-key -L #再次查看(发现出现在了Accepted Keys:下面表示已经通过了验证,可以建立通信了)
# salt-key -L #再次查看(发现出现在了Accepted Keys:下面表示已经通过了验证,可以建立通信了)
#通过端口查看,返现有一台机器与master端的端口建立了连接。
注:
master 秘钥对默认存储在/etc/salt/pki/master/master.pub /etc/salt/pki/master/master.pem
master 端认证的公钥存储在:/etc/salt/pki/master/minions/
minion 秘钥对默认存储在/etc/salt/pki/minion/minion.pub /etc/salt/pki/minion/minion.pem
minion 存放的master公钥/etc/salt/pki/minion/minion_master.pub
minion_id 默认存储在/etc/salt/minion_id
1.6master服务端测试
# salt 'zwidc_kvm_192.168.1.104' test.ping #测试服务器端是否能控制客户端。
# salt 'zwidc_kvm_192.168.1.104' cmd.run "hostname" #让客户端执行一个命令。
三、SaltStack命令详解
3.1salt命令详解
# man salt 或者 # salt -h 都可以查看salt命令使用方法:
# salt -h
Usage: salt [options] '<target>' <function> [arguments]
Options(选项):
--version : 查看saltstack软件的版本号。
--versions-report : 查看saltstack软件以及依赖包的版本号。
-h, --help : 查看帮助信息。
--saltfile=SALTFILE:指定saltfile的路径。 如果没有通过,将在当前工作目录中搜索一个。
-c CONFIG_DIR, --config-dir=CONFIG_DIR:指定配置文件的目录(默认是/etc/salt/)。
-t TIMEOUT, --timeout=TIMEOUT:指定超时时间默认是5秒。
--hard-crash:捕捉到original异常不退出默认关闭。
-s, --static:以组的形式返回所有minion的数据。
-p, --progress:显示进度图,需要progressbar的python包。
--failhard :在第一个执行错误返回之后停止批处理。
--async : 异步执行。
--subset=SUBSET : 对目标minions的随机子集执行程序. minions在执行前会先验证是否存在该命名的函数,再去执行
-v, --verbose : 打开命令详细,显示jid和活动的工作查询
--hide-timeout : 隐藏超时时间。
--show-jid : 显示任务的jid。
-b BATCH, --batch=BATCH, --batch-size=BATC : 按照百分比执行任务。
-a EAUTH, --auth=EAUTH, --eauth=EAUTH, --external-auth=EAUTH : 指定外部认证方式。
-T, --make-token : 生成master token.
--return=RETURNER : 设置一种替代方法。 默认情况下,salt将从命令将返回数据发送回主服务器,但返回数据可以重定向到任意数量的系统,数据库或应用程序。
--return_config=RETURNER_CONF : 指定命令返回的设置文件。
-d, --doc, --documentation : 查看指定模式或所有模块文档。
--args-separator=ARGS_SEPARATOR : 指定发送命令跟命令参数的分隔符,当用户想把一个命令当作参数发送给另一个命令执行时。
--summary : 显示汇总信息。
--username=USERNAME : 指定外部认证的用户名。
--password=PASSWORD : 指定外部认证的密码。
--metadata=METADATA : 将元数据传递给Salt,用于搜索作业。
Logging Options(日志相关参数):
-l LOG_LEVEL, --log-level=LOG_LEVEL : 指定日志级别。
--log-file=LOG_FILE : 指定日志记录文件
--log-file-level=LOG_LEVEL_LOGFILE : 日志文件日志记录级别。'all', 'garbage', 'trace', 'debug', 'info', 'warning', 'error','critical', 'quiet'. 默认: 'warning'.
Target Options(目标选择选项):
-E, --pcre : 正则匹配
-L, --list: 列表匹配,目标表达式将被解释为以逗号分隔的列表。
-G, --grain: grains匹配。
--grain-pcre :grains加正则匹配。
-N, --nodegroup:组匹配。
-R, --range:范围匹配。
-C, --compound : 综合匹配(指定多个匹配,空格隔开)。
-I, --pillar : pillar值匹配。
-J, --pillar-pcre : pillar加正则匹配。
-S, --ipcidr : minions网段地址匹配。
Output Options(输出参数):
--out=OUTPUT, --output=OUTPUT : 使用指定的输出器从'salt'命令打印输出。 内置的是 'key', 'yaml', 'overstatestage', 'newline_values_only', 'pprint', 'txt', 'raw', 'virt_query', 'compact', 'json', 'highstate', 'nested', 'quiet', 'no_return'.
--out-indent=OUTPUT_INDENT, --output-indent=OUTPUT_INDENT : 在空格中打印由提供的值缩进的输出。 负值禁用缩进。 仅适用于支持缩进的输出器。
--out-file=OUTPUT_FILE, --output-file=OUTPUT_FILE : 输出到指定文件。
--out-file-append, --output-file-append : 输出附加到指定的文件。
--no-color, --no-colour : 关闭所有的颜色显示。
--force-color, --force-colour : 强制输出颜色显示。
--state-output=STATE_OUTPUT, --state_output=STATE_OUTPUT : 覆盖配置的state_output值输出,指定state格式(full, terse, mixed, changes or filter)输出,默认值是full。
3.2salt-key命令详解
# salt-key -h
Actions:
-l ARG, --list=ARG:显示指定状态的key(支持正则表达式)
-L, --list-all :列出所有公钥。"--list all"已经弃用。
-a ACCEPT, --accept=ACCEPT: 接受指定的公钥(除了挂起的密钥之外,使用--include-all匹配拒绝的密钥),支持正则表达式。
-A, --accept-all :接收所有等待认证的key。
-r REJECT, --reject=REJECT :拒绝指定等待认证的key(支持正则表达式)
-R, --reject-all:拒绝所有等待认证的key。
--include-all: 显示所有状态的key。
-p PRINT, --print=PRINT :打印指定的公钥支持正则表达式。
-P, --print-all:打印所有的公钥。
-d DELETE, --delete=DELET:删除指定的key。
-D, --delete-all:删除所有的key。
-F, --finger-all:显示所有key的指纹信息。
3.3客户端salt-call(就相当于要把远程执行的命令,换到客户端本地自己本地执行了。)
salt-call命令的output和log相关参数与salt命令一样,就不记录了,对一些不同的参数做下记录。
# salt-call -h
Usage: salt-call [options] <function> [arguments]
Options:
--version: 查看saltstack程序的版本号。
--versions-report: 查看saltstack程序以及依赖包的版本号。
-h, --help:查看帮助信息。
--saltfile=SALTFILE: 指定配置文件。
-c CONFIG_DIR, --config-dir=CONFIG_DIR:指定配置文件目录(默认是/etc/salt/)
--hard-crash: 捕捉到original异常不退出(默认关闭)。
-g, --grains: 返回的信息生成grains。
-m MODULE_DIRS, --module-dirs=MODULE_DIRS: 指定自定义模块目录。
-d, --doc, --documentation: 查看指定模块或者所有模块文档。
--master=MASTER: 指定saltstack master。如果省略此选项,将使用minion config中的主选项。如果设置了多主机,则首先列出的主机将被使用。
--return=RETURNER:设置salt-call将返回数据传递给一个或多个returner接口。
--local:在本地运行salt-call,默认也是在本地运行。
--file-root=FILE_ROOT:指定fire基础根目录。
--pillar-root=PILLAR_ROOT: 指定pillar基础根目录。
--retcode-passthrough:显示salt-call命令返回状态。
--metadata :打印执行元数据以及返回。 这将打印输出器数据,返回码等。
--id=ID:指定一个minion ID.
--skip-grains:不加载grains信息。
--refresh-grains-cache:强制刷新grains信息。
-t AUTH_TIMEOUT, --timeout=AUTH_TIMEOUT:更改运行命令的超时时间,默认 60秒。
3.4还需要重点掌握的命令
上面说到的test.ping和cmd.run 都是内置的用法,其实也就是python自带的模块功能,那么如何知道我们现在的salt可以使用哪些方法呢?
# salt '*' -d|grep :\'|more #就可以以列表的形式查看所有可以使用的内置方法。为啥要加过滤呢,因为方法下面还有对应的举例。
# salt 'agent1.salt' sys.list_functions #上面的方法还是比较粗糙,如果你已经知道了用法,可以用sys.list_functions将所有我们可以使用的函数列出来,当然就指定一个节点就可以了,指定'*'显示结果也是重复。
我现在已经把所有的可以用的模块的函数都查出来了,如果我只想看某个模块所拥有的函数方法呢?
# salt 'agent1.salt' sys.list_functions test #如我可以查看test模块有哪些函数方法可以用。
如果我想查看某个模块,或者某个模块里面某个函数的用法呢?
# salt 'agent1.salt' sys.doc test #查看test所有的方法及用法。
# salt 'agent1.salt' sys.doc test.ping #test.ping具体用法查看。
四、SaltStack配置文件详解
4.1master配置文件详解
saltstack大部分配置都已经指定了默认值,只需要根据实际需求进行修改就行。
# vim /etc/salt/master
配置项及默认值 | 注释 |
主配置设置: | |
default_include: master.d/*.conf | 指定include的目录和文件 |
interface: 0.0.0.0 | 端口监听地址 |
ipv6: FALSE | IPV6地址是否监听 |
publish_port: | ZeroMQ消息发布端口 |
user: root | saltstack运行的用户 |
max_open_files: 100000 | 最大文件打开限制不能高于硬限制,每个连接至少要使用一个文件描述符。 |
worker_threads: 5 | saltstack工作的线程数目,不能低于3 |
ret_port:4506 | saltstack的消息接听端口 |
pidfile: /var/run/salt-master.pid | salt-master的进程pid文件位置 |
root_dir: / | salt-stack工作的根目录,改变它可以使salt从另外一个目录开始运行,好比chroot |
pki_dir: /etc/salt/pki/master | 公钥存储目录 |
cachedir: /var/cache/salt/master | jobs和cache的缓存目录 |
extension_modules: <no default> | 自定义模块的目录 |
module_dirs: <no default> | 自定义模块的同步目录 |
verify_env: True | 服务启动时进行权限设置与验证 |
keep_jobs: 24 | 设置jobs缓存的过期时间,单位是小时 |
timeout: 5 | 设置salt命令和api的默认超时值。 默认值为5秒。 |
loop_interval: 60 | saltstack进程检测周期,清理作业缓存并执行调度程序等。单位秒 |
output: nested | 设置salt命令使用的默认输出器。 |
show_timeout: True | 开启minion timeout提示 |
color: True | 开启output颜色提示 |
strip_colors: False | 不要从嵌套结果和状态输出中剥离彩色输出(默认情况下为true)。 |
sock_dir: /var/run/salt/master | 设置用于保存unix套接字的目录 |
enable_gpu_grains: False | 设置grains收集主控制器的GPU信息 |
job_cache: True | jobs缓存,对于大型部署(超过5000次)可能是负担,不建议开启。 |
minion_data_cache: True | 开启minion的grains和pillar数据的缓存 |
event_return: mysql | 设置return存储 |
event_return_queue: 0 | 启用event_returns可能会对存储系统造成重大负担。默认情况不排队。 |
max_event_size: 1048576 | 允许消息的最大大小,该值以字节表示。 |
ping_on_rotate: False | 建议通过使用'key'标签监听'aes_key_rotate'事件来处理此事件,并适当地执行。 |
preserve_minion_cache: False | 删除key时是否删除cache数据 |
con_cache: False | 此高速缓存并大大提高了max_minions的性能。 |
安全设定: | |
open_mode: False | Ture的话,就会关闭身份验证,这仅适用于高度安全的环境 |
auto_accept: False | 设置自动签证,默认是False不自动签证 |
autosign_timeout: 120 | 自动签证的超时时间,单位是秒 |
autosign_file: /etc/salt/autosign.conf | 定义自动签名规则文件,支持正则表达式以及全局行 |
autoreject_file: /etc/salt/autoreject.conf | 定义自动拒绝签证的规则文件,可以覆盖autosign_file定义的成员资格 |
permissive_pki_access: False | 设置pki文件访问权限 |
client_acl: | 定义用户模块执行限制 |
client_acl_blacklist: | 定义模块和用户黑名单 |
sudo_acl: False | 关闭利用sudo后client_acl限制 |
external_auth: | 指定外部认证方式 |
token_expire: 43200 | token过期时间,单位是秒,默认是12小时 |
file_recv: False | 是否允许minions推送文件到master端 |
file_recv_max_size: 100 | 对可以推送到主机的文件的大小设置一个硬限制。单位是MB 默认值:100 |
Salt-SSH配置: | |
roster_file: /etc/salt/roster | roster文件的路径 |
ssh_minion_opts: | salt-ssh不使用本地配置。 可以在名册上(“minion_opts”)上以覆盖方式覆盖 |
主模块管理 | |
runner_dirs: [] | 管理主模块的加载方式。 |
cython_enable: False | 是否为主模块启用Cython |
状态系统设置 | |
state_top: top.sls | 设置state入口文件 |
master_tops: | 设置其他的top方式 |
external_nodes: None | 允许Salt收集通常放在*文件中的数据是将返回ENC数据的可执行文件。 |
renderer: yaml_jinja | 设置呈现状态数据的方式 |
jinja_trim_blocks: False | 如果这被设置为True,则在删除Jinja块后的第一个换行符。默认为False |
jinja_lstrip_blocks: False | 如果将此设置为True,则前导空格和制表符将从行的开头移除到块。 默认为False |
failhard: False | failhard选项会在状态执行中检测到第一个故障后立即停止,默认为False |
state_verbose: True | |
state_output: full | 默认情况下,打印所有数据。 |
state_aggregate: False | 自动聚合支持mod_aggregate的所有状态或传递状态模块名称列表以自动聚合这些类型。 |
state_events: False | 在状态运行中的每个功能完成执行时发送进度事件。 |
文件服务器设置 | |
file_roots: | 文件服务器的根目录 |
hash_type: md5 | 文件检验的hash类型,支持md5,sha1,sha224,sha256,sha384和sha512。 |
file_buffer_size: 1048576 | 文件服务器中的缓冲区大小 |
file_ignore_regex: | 设置同步file忽略文件正则 |
file_ignore_glob: | |
fileserver_backend: | Salt支持一个模块化的文件服务器后端系统,该系统允许master直接链接到第三方系统来收集和管理可用于客户端的文件。 |
fileserver_followsymlinks: False | 设置fireserver允许文件链接 |
fileserver_ignoresymlinks: True | 忽略fireserver允许文件链接 |
fileserver_limit_traversal: False | 设置fireserver的遍历限制 |
fileserver_events: False | 文件服务器可以在每次更新文件服务器时触发事件,默认情况下禁用 |
gitfs_provider: gitpython | Gitfs驱动可以由两个python模块之一提供:GitPython或pygit2。 如果使用pygit2,则还必须安装libgit2和git。 |
gitfs_remotes: | fileserver gitfs_remotes地址 |
gitfs_ssl_verify: True | gitfs_ssl_verify选项指定在联系gitfs后端时是否忽略ssl证书错误。默认值True以外的任何值都是安全性问题 |
gitfs_root: somefolder/otherfolder | gitfs_root选项可以从存储库中的子目录中提供文件。 路径是相对于存储库的根而定义的,默认为存储库根。 |
Pillar设置 | |
pillar_roots: | 设置pillar_roots目录 |
ext_pillar: | 设置ext_pillar方式 |
ext_pillar_first: False | ext_pillar_first选项允许在文件系统illar之前填充外部pillar源。 |
pillar_gitfs_ssl_verify: True | 开启证书验证,将此标志设置为除默认值True以外的任何值都是安全性问题 |
pillar_opts: False | 开启pillar读取opts参数 |
pillar_safe_render_error: True | 因为错误可能包含模板数据,将提供不该有的信息,如密码。当设置为true时,错误消息将仅显示:呈现SLS'my.sls'失败。 |
pillar_source_merging_strategy: smart | 配置不同来源之间的合并策略,它接受四个值:recurse,aggregate,overwrite或smart。 |
Syndic settings | |
order_masters: False | 设置开启syndic |
syndic_master: masterofmaster | 如果这个master将运行一个salt syndic守护进程,设置syndic_master的地址 |
syndic_master_port: 4506 | 设置syndic_master的监听端口 |
syndic_pidfile: /var/run/salt-syndic.pid | 设置syndic的pid文件 |
syndic_log_file: syndic.log | 设置syndic的日志文件 |
对等发布设置 | |
peer: | 对等设置 |
peer_run: | 此设置与对等设置相同,除了打开运行程序而不是模块功能。 所有对等运行程序支持都默认关闭,必须在使用前启用。 |
日志设置 | |
log_file: /var/log/salt/master | naster日志文件位置 |
log_level: warning | 日志级别 |
log_level_logfile: warning | 日志记录级别 |
log_datefmt: '%H:%M:%S' | 日志时间格式 |
log_datefmt_logfile: '%Y-%m-%d %H:%M:%S' | 日志文件的记录的时间格式 |
log_fmt_console: | 设置console日志格式 |
log_fmt_logfile: | 设置日志记录日志格式 |
log_granular_levels: {} | 设置指定lib库的日志级别 |
节点组 | |
nodegroups: | 设置了一个节点组后面指定组以及组里面有哪些主机,配置文件里面有例子 |
范围集群设置 | |
range_server: range:80 | 提供集群信息的范围服务器(和可选端口) |
windows软件回收设置 | |
win_repo: '/srv/salt/win/repo' | 回收主机的文件 |
win_repo_mastercachefile: | master的回购缓存文件的位置 |
win_gitrepos: | git存储库列表包含在本地的repo中 |
Returner设置 | |
return: mysql | minion返回的结果被什么使用 |
博文来自:www.51niux.com
4.2 minion配置文件详解
# vim /etc/salt/minion
配置文件及默认值 | 注释 |
主配置文件设置 | |
default_include: minion.d/*.conf | include配置文件 |
master: salt | master端的地址 |
random_master: False | 设置多master随机请求 |
master_shuffle: False | 如果master_type设置为故障转移这里启用 |
master_type: str | 配置为故障转移,通过将此值设置为“str”来配置多个热主机。 |
master_alive_interval: 30 | 设置了故障转移,默认是30秒轮询检查一次,要完全禁用间隔,请将值设置为-1。 |
ipv6: False | 设置Ipv6地址监听 |
retry_dns: 30 | 解析master主机名失败之后30秒再尝试,设置为0为不尝试 |
master_port: 4506 | 设置主应答和认证服务器使用的端口。 |
user: root | 运行salt的用户 |
sudo_user: saltdev | 设置sudo_user将导致salt将sudo下的所有执行模块运行到sudo_user中给出的用户。 |
pidfile: /var/run/salt-minion.pid | 守护进程的pid文件 |
root_dir: / | saltstack的工作目录 |
pki_dir: /etc/salt/pki/minion | 存储pki信息的目录 |
id: | 明确地声明这个使用的id,如果设置,id将是python调用返回的主机名。 |
append_domain: | 将域附加到主机名这对于socket.getfqdn()不会产生FQDN(例如Solaris)的系统 |
grains: | 设置grains信息 |
cachedir: /var/cache/salt/minion | minion的cache数据目录 |
verify_env: True | 在启动时验证并设置配置目录的权限。 |
cache_jobs: False | 是否开启jobs的缓存 |
sock_dir: /var/run/salt/minion | minion的sock目录 |
output: nested | 设置salt-call命令使用的默认输出器。 默认值为“nested”。 |
color: True | 默认输出为彩色。 要禁用彩色输出,请将颜色值设置为False。 |
strip_colors: False | 从嵌套结果和状态输出中剥离彩色输出。 |
backup_mode: minion | 设置备份文件,唯一有效的设置是minion,默认禁用 |
acceptance_wait_time: 10 | 等待master接收minion的公钥,10秒尝试一次直到成功。 |
acceptance_wait_time_max: 0 | 等待公钥认证的最大值。 如果设置为零,重新连接尝试之间的时间将保持不变。 |
rejected_retry: False | 设置如果master拒绝minion的公钥,是否继续尝试而不是退出。 |
random_reauth_delay: 60 | 当主密钥更改时,minion将尝试重新认证,设置随机数防止客户端同时向master端请求。 |
auth_timeout: 60 | 设置等待认证的超时时间为60秒,然后再重新发起请求直到成功连接为止。 |
auth_tries: 7 | 尝试验证时可接受的SaltReqTimeoutError连续数。 |
auth_safemode: False | 在ping_interval期间SaltReqTimeoutError导致身份验证失败是否重新启动子服务进程。 |
ping_interval: 0 | Ping Master确保连接活着(单位分钟)。 |
loop_interval: 60 | 在评估调度程序和运行清理任务之间等待几分钟的时间。这默认为60秒 |
grains_refresh_every: 1 | 定期检查其grains,10分钟是合理值,单位是分钟。 |
grains_cache: False | 是否做grains的缓存 |
grains_cache_expiration: 300 | 启用grains缓存之后这里才有作用,缓存过期时间,单位是秒 |
ipc_mode: ipc | Windows平台缺少posix IPC,必须依赖于较慢的基于TCP的进程间通信。 |
tcp_pub_port: 4510 | tcp模式下minion的pub端口 |
tcp_pull_port: 4511 | tcp模式下minion的pull端口 |
max_event_size: 1048576 | 最大消息的大小,单位为字节。 |
master_alive_interval: 30 | 轮询检测master是否从故障恢复的秒数。 |
minion模块设置 | |
disable_modules: [cmd,test] | 禁用特定的模块 |
disable_returners: [] | |
modules_max_memory: -1 | 为导入的模块指定最大大小单位是字节。此功能目前仅支持* nix操作系统需要psutil。 |
状态管理设置 | |
renderer: yaml_jinja | 状态管理系统执行所有状态模板默认渲染器是yaml_jinja。 |
failhard: False | failhard选项会在状态执行中检测到第一个故障后立即停止。 默认为False。 |
autoload_dynamic_modules: True | 在运行之前自动加载动态模块 |
clean_dynamic_modules: True | 如果动态模块不在服务器上面将会自动从服务器中删除 |
environment: None | 设置minion的运行环境。用来做环境隔离用的。 |
state_top: top.sls | 设置state入口文件 |
文件目录设置 | |
file_client: remote | 设置文件客户端。 默认是remote远程。可以设置为local从本地查找文件。 |
file_roots:/srv/salt | 本地文件的file服务目录 |
fileserver_limit_traversal: False | Salt文件服务器是否将完全递归到所有定义的环境中以尝试查找文件。 |
hash_type: md5 | 文件检验hash类型 |
pillar_roots:/srv/pillar | 果file_client设置为local,则会在本地搜索Salt pillar,这里是其目录 |
安全设定 | |
open_mode: False | Ture的话,就会关闭身份验证,这仅适用于高度安全的环境 |
permissive_pki_access: False | 设置pki文件访问权限 |
state_verbose: True | 设置可用于更改状态系统数据打印到显示器的方式。 默认情况下打印所有数据。 |
state_output: full | |
state_output_diff: False | 是否忽略混乱日志 |
state_output_profile: True | 更改每个状态运行时是否显示配置文件信息。 |
master_finger: '' | 在主密钥交换之前,主公钥的指纹验证salt主人的身份。这里是master的指纹。 |
线程设置 | |
multiprocessing: True | 是否开启多线程支持接,收到一个发布时,会生成一个新进程,并在其中执行该命令。 |
日志设置 | |
log_file: /var/log/salt/minion | minion的日志文件位置 |
log_level: warning | 日志级别 |
log_level_logfile: warning | 日志记录级别 |
log_datefmt: '%H:%M:%S' | 日志时间格式 |
log_datefmt_logfile: '%Y-%m-%d %H:%M:%S' | 日志文件的记录的时间格式 |
log_fmt_console: | 设置console日志格式 |
log_fmt_logfile: | 设置日志记录日志格式 |
log_granular_levels: {} | 设置指定lib库的日志级别 |
zmq_monitor: False | 是否记录的所有事件将包括字符串'ZeroMQ事件'。 |
长连接配置 | |
tcp_keepalive: True | 是否开启tcp长连接 |
tcp_keepalive_idle: 300 | 默认300在5分钟后发送第一个keepalive,在Linux上,OS默认(-1)通常为7200秒 |
tcp_keepalive_cnt: -1 | 多少个丢失的探测器来考虑连接丢失。默认值-1使用操作系统默认值通常在Linux上为9 |
tcp_keepalive_intvl: -1 | keepalives的检测频率。 默认值-1使用操作系统默认值,通常在Linux上为75秒 |
Returner设置 | |
return: mysql | minion返回的结果被什么使用 |