Bootstrap

死磕salt系列-salt配置文件

这篇文件主要用来解释一下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

参考文档

master端配置
官方文档-eauth

;