这篇文件主要用来解释一下salt配置中常用的参数,其他的参数可以参考官网文档。
基础参数
interface
: 服务器监听地址。ipv6
: 是否启用ipv6。max_open_files
: 最大文件打开数。worker_threads
: 启动几个主线程。timeout
: 设置saltAPI和命令默认超时时间。state_verbose
: 显示返回状态的详细信息程度。False 只返回变化的地方及执行结果。
日志配置
log_file: /var/log/salt/master
日志文件存放位置。log_level: warning
日志文件的级别。
除了将日志写入到本地,也可以将日志写入到rsyslog中。格式: <file|udp|tcp>://<host|socketpath>:<port-if-required>/<log-facility>
。
log_file: udp://loghost:10514
log的日志级别
- quiet: 不应该配置这个级别的参数。
- critical: 严重错误日志才写入。
- error: 写入错误日志。
- warning: 写入告警级别的日志。
- info: 正常的日志。
- profile: 分析salt的性能信息。
- debug: 详细日志
- trace: 比debug更详细的日志。
- garbage: 更多的详细日志。
- all: 所有的日志。
file_roots 配置
file_roots:
base:
- /data/db/salt/base/
prod:
- /data/db/salt/prod/
test:
- /data/db/salt/test/
存放sls配置文件的地方。可以在salt命令中使用saltenv 知道使用具体的环境。默认是base。
salt 'linux-node2' state.sls nginx.config saltenv=prod
pillar_roots:
base:
- /data/db/salt/pillar
存放pillar配置文件的地方。
salt权限控制
pam 模块权限控制
salt 扩展认证 PAM,可以利用PAM 认证机制对系统账户做出功能操作上的限制。依赖的模块salt.states.external_auth
。
- 认证用户不允许使用root
- 可以限制认证用户可使用的功能模块
- 可以限定认证用户可管理的主机
开启PAM认证
编辑 /etc/salt/master
external_auth:
pam:
salt:
- '*'
创建 salt 用户 设置密码
验证
salt PAM 认证用户 只能通过-a pam
参数才能使用
salt -a pam test.ping
会提示登陆用户,输入密码,如果正确返回结果,说明pam认证已经生效
实例 :
/etc/salt/master
external_auth:
pam:
admin:
- '*' # 所有模块
salt:
- test.ping # test.ping 模块
test:
- 'dev*': # 主机配置规则
- test.ping # Salt 模块
解释:
- admin 用户可管理所有主机,使用所有salt功能模块
- salt 用户可管理所有主机,仅能使用test.ping模块
- test 用户只能管理部分主机,仅能使用test.ping模块
实例1: 以salt用户为例,认证用户必须打开PAM 参数才能操作
失败操作:
salt '*' test.ping
Failed to authenticate, is this user permitted to execute commands?
成功操作:
salt -a pam '*' test.ping
username: salt
password:
ubuntu-master:
True
实例2: 以salt用户为例,执行未授权模块被拒绝
salt -a pam '*' state.highstate
username: salt
password:
Failed to authenticate, is this user permitted to execute commands?
以test用户为例,操作未授权主机被拒绝
失败操作
salt -a pam '*' test
username: test
password:
Failed to authenticate, is this user permitted to execute commands?
成功操作
salt -a pam 'test-001' test
username: test
password:
test-001:
True