我有在 centos7 上运行的 salt-stack maser 和 minion 服务器。我想在 minion 服务器中安装 vim 包。为此,我在 etc 下创建了 srv 目录和 vim.sls 文件。
我的 vim.sls 文件看起来像这样。
vim:
pkg:
- installed
当我运行使用时 salt '*' state.sls vim
出现错误。
192.168.94.155:
Data failed to compile:
----------
No matching sls found for 'vim' in env 'base'
ERROR: Minions returned with non-zero exit code
如何解决此错误?
答案1
srv 目录的结构应该是:
/srv/
- salt
- pillar
您的 vim.sls 应该在 salt 目录中,而不是在 /srv 目录中。
此外,请注意对于 vim,根据操作系统系列(Redhat 和其他系统),软件包名称并不总是相同的。为此,使用 pillars 可能会非常有帮助:
{% if grains['os_family'] == 'RedHat' %}
apache: httpd
git: git
gvim: vim-X11
vim: vim-enhanced
{% elif grains['os_family'] == 'Debian' %}
apache: apache2
{% else %}
apache: apache2
git: git
gvim: gvim
vim: vim
{% endif %}
通过这样做,你可以做以下事情
deploy editors:
pkg.installed:
- pkgs:
- {{ pillar['vim'] }}
- {{ pillar['gvim'] }}
并且无论您的 minion 位于哪个操作系统系列,都会部署正确的软件包。
编辑:这是我使用支柱的方式:在 /srv/pillars 中我有一个包含以下内容的 top.sls 文件
base:
'*':
- packages
然后,在与 top.sls 相同的级别上,我有一个 packages.sls 文件,其中包含我之前发布的内容。例如,可以在我的盐配方中使用 {{ pillar['vim'] }}。但在你的情况下,它不是必需的。这只是处理各种 Linux 风格(RHEL、Debian 等)的简单方法,如果我想添加更多变量数据,我仍然可以在同一级别添加另一个 sls