【问题标题】:salt can't recognize the file_roots in the config of mastersalt 无法识别 master 配置中的 file_roots
【发布时间】:2016-05-20 05:39:59
【问题描述】:

我要执行以下命令:

1) salt '*' state.sls test
(test 是 .sls 文件的名称,其绝对路径是 /srv/salt/test.sls)

结果是:

minion-10-211-55-3:
  Data failed to compile:
----------
  No matching sls found for 'test' in env 'base'

2)salt '*' cp.get_file salt://hello.txt c:/new/hello.txt makedirs=True

(hello.txt 存在于 /srv/salt 中)

这个命令没有返回任何结果,肯定是失败了。


我曾经成功地执行了这两个命令,但不知何故我有一天不能这样做。我不记得我更改了哪个配置。

主配置中的 file_roots 部分是这样的:

file_roots:
  base:
    - /srv/salt
  dev:
    - /srv/salt-dev

我在这个问题上卡了几天。因为这两个命令与env'base'有关,我认为是file_roots config的问题。我已经检查了我的主配置是否正确,并且我已经通过 service salt-master restart 多次重启了 salt-master 以使配置正常工作。

为什么盐仍然有问题? file_roots 设置似乎是正确的。配置不行吗??

任何帮助,方向表示赞赏。 谢谢。


test.sls 是:

run-an-exe:
  cmd.run:
    - name: c:/Salt-Minion-2015.8.8-2-AMD64-Setup.exe

我只是想测试一下 salt 是否可以控制 windows minion 从 linux master 运行 .exe。命令执行成功后,我可以在任务管理器中查看一个名为Salt-Minion-2015.8.8-2-AMD64-Setup.exe的进程。

操作系统:

大师:CentOS 6.7(Final)

minion-10-211-55-3:Windows 7

【问题讨论】:

    标签: salt-stack


    【解决方案1】:
    1. 使用更简单的模块调用salt '*' state.apply test

    2. 确保master和minion是同一个版本

    3. 启动 salt-master 时,使用sudo salt-master -l debug 运行守护程序来诊断问题。

    4. 始终使用 yaml 模式元解析器(例如 kwalify)验证您的状态文件,例如kwalify -m test.sls 。是的,SLS 包含语法错误(例如,制表符和空格的混合)会吐出错误的“丢失文件”错误。

    5. 对于在之前运行的 minion 上失败的语句,重新启动 minion。

    【讨论】:

    • 感谢您的回答!我下载了 pykwalify,当我使用 pykwalify 验证状态时,它吐出 pykwalify.errors.RuleError: 文件。我编写了一个 python 程序来读取我的主配置文件,它确实得到了我想要的结果。我认为这仍然是 salt 无法正确识别 env 'base' 的问题。 .sls文件和config文件的缩进是两个空格对吗??
    • @Neven.Leung :始终使用将所有制表符转换为空格的编辑器。如果您使用 kwalify 等工具,则需要指定仅验证 meta ,因为我们没有 saltstack 的模式。这将帮助您找出 yaml 语法中的问题,例如在缩进中混合制表符和空格,属性名称后面的空格。
    • 感谢您的建议:)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多