首页 文章

必须指定saltenv = base?

提问于
浏览
0

我的配置错误,我必须在运行 sudo salt '*' state.highstate saltenv=base 时指定 saltenv=base . 如果我在没有指定saltenv的情况下运行高状态,我收到错误消息:

找不到Top文件或master_tops数据匹配项 .

在minion或master上运行 salt-call cp.get_file_str salt://top.sls 会拉回右侧top.sls文件 . 这是我的top.sls的片段:

base:
  # All computers including clients and servers
  '*':
    - states.schedule_highstate

  # any windows machine server or client
  'os:Windows':
    - match: grain
    - states.chocolatey

此外,我可以运行与top.sls位于同一目录或子目录中的任何状态,而不指定 saltenv= . 与 sudo salt '*' state.apply states.(somestate) .

虽然我确实在/ etc / salt / master中指定了base,如下所示:

file_roots:
  base:
    - /srv/saltstack/salt/base

Salt master上的文件系统中没有任何内容 . 所有的salt和posts文件都来自GitFS . 指定 saltenv= 会从正确的相应git分支中获取,主分支响应 saltenv=base 或执行 state.apply 时没有指定saltenv(可行) .

gitfs_remotes
  - https://git.asminternational.org/SaltStack/salt.git:
    - user: someuser
    - password: somepassword
    - ssl_verify: False
.
.
.
ext_pillar:
  - git:
    - master https://git.asminternational.org/SaltStack/pillar.git:
      - name: base
      - user: someuser
      - password: somepassword
      - ssl_verify: False
      - env: base
    - dev https://git.asminternational.org/SaltStack/pillar.git:
      - name: dev
      - user: someuser
      - password: somepassword
      - ssl_verify: False
      - env: dev
    - test https://git.asminternational.org/SaltStack/pillar.git:
      - name: test
      - user: someuser
      - password: somepassword
      - ssl_verify: False
      - env: test
    - prod https://git.asminternational.org/SaltStack/pillar.git:
      - name: prod
      - user: someuser
      - password: somepassword
      - ssl_verify: False
      - env: prod
    - experimental https://git.asminternational.org/SaltStack/pillar.git:
      - user: someuser
      - password: somepassword
      - ssl_verify: False
      - env: experimental

行为是如此不一致,除非指定saltenv,否则无法找到top.sls,但运行状态没有 saltenv= .

有任何想法吗?

1 回答

  • 0

    经过更多的调试,我找到了答案 . 其中一个环境top.sls文件格式错误,导致错误 . 指定 saltenv=base 时,不会评估其他任何顶级文件,这就是它工作的原因 . 在我验证了所有环境中的所有top.sls文件后,事情按预期运行 .

    请注意自己,验证所有顶级文件,而不仅仅是您正在处理的文件 .

相关问题