在 env 'base' 中找不到 'php-apps' 的匹配 sls

No matching sls found for 'php-apps' in env 'base'

我有以下 saltstack 顶级文件。

  'blog.php.*':
    - php-apps
    - php-apps.blog

  'app.php.*':
    - php-apps
    - php-apps.some-app

  '*phpone*':
    - php-apps
    - php-apps.blog
    - php-apps.some-app

当我 运行 上述环境的高状态时它工作正常。像这样

salt 'blog.php.*' state.highstatesalt 'app.php.*' state.highstate

但是当我运行第三台服务器时,它失败了。

salt '*phpone*' state.highstate

错误:

No matching sls found for 'php_apps' in env 'base'

我去了 minion 服务器,发现 php-apps 中的 init.sls 文件没有被复制到 minion 缓存位置 /var/cache/salt/minion/files/base/php-apps

我找不到任何可能导致此问题的编译错误的状态文件日志。

我尝试了以下方法,但仍然无效。

我错过了什么?如果需要任何其他信息,请告诉我。

首先,我将使用 yaml 验证器来验证 yaml 元结构。即.. 安装 kwalify

#install kwalify
sudo apt-get install kwalify
# Now try to check the top file with yaml meta-validation 
kwalify -m top.sls 
# to check many yaml sls file
find . | grep "sls"  | xargs   kwalify -m 

当 salt 不验证最基本的元结构时,请不要感到惊讶。

因为 saltstack 使用 YAML,如果你没有强制你的编辑器转换所有 TABS 来修复 spaces,它也会遇到制表符与 space 缩进问题。