盐在引擎盖下执行什么命令以达到所需的奴才状态?

时间:2018-11-28 13:06:45

标签: salt-stack

无论正确与否,我都假设为了实现*.sls文件中定义的声明性配置,盐主必须在每个奴才上执行一系列命令式命令。例如,对于

install_docker_1703:
  pkgrepo.managed:
    - humanname: Docker CE Repository
    - name: deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable
    - key_url: https://download.docker.com/linux/ubuntu/gpg
    - require_in:
      - pkg: docker-ce
  pkg.installed:
    - name: docker-ce
    - hold: True
    - refresh: True
    - cache_valid_time: 30 # very low value for testing purposes
    - version: '17.03.2*'

这些命令的顺序被执行

add-apt-repository <docker-repo>
apt-get update
apt-get install docker-ce=17.03.2-xxxxxxx

加上一些检查以验证当前状态并将其与所需状态进行比较。

我在调试盐的行为时遇到麻烦。在以上示例的上下文中,我在验证是否每次运行salt master(salt '*' state.apply)时是否更新apt缓存,或者是否不每30秒更新一次,或者根本不更新。

如何将执行的命令的确切顺序以及它们各自的输出输出到stdout(或在某些日志文件中找到)?

1 个答案:

答案 0 :(得分:1)

您可以在/var/log/salt/minion文件中找到有关奴才的详细命令,
您很可能需要将日志记录级别调整为DEBUGlog_level_logfile: debug就足够了。否则,您只会发现错误/警告。

调试行为:最好检查出盐源并自行查找。 鉴于盐矿的工作条件不同,执行分支太多了。

每个状态(状态模块)由多个模块调用(执行模块)组成。在执行模块中,您将找到命令。这是确定给定状态的确切命令的最简单方法