当我saltstack用来管理我的服务器时.我发现了一件有趣的事情:当我跑步时salt '*' pkg.installed httpd,我得到以下信息:pkg.installed is not available.但我可以pkg.installed在我的.sls文件中使用函数,它工作得很好.所以,我对此感到困惑.而且我认为这是因为saltstack.
谁能帮我?
这里有两个相关但不同的概念.
执行模块是大多数工作实际发生的地方,通常是您在命令行上运行的.例如:
salt '*' pkg.install vim
Run Code Online (Sandbox Code Playgroud)
这将直接调用您的操作系统的包管理器,如yum或apt,并安装vim.
状态模块是有状态的命令,它们位于执行模块的"上方".状态模块将检查是否已存在所需结果,并进行必要的更改以获得所需状态.它们与执行模块的结合方式不同.例如,在这个salt状态文件(sls文件)中:
cat /srv/salt/vim.sls
install_vim_please:
pkg.installed:
- name: vim
Run Code Online (Sandbox Code Playgroud)
然后,您可以运行state.sls执行模块以应用此pkg.installed状态的sls文件.
salt '*' state.sls vim
Run Code Online (Sandbox Code Playgroud)
因为我们正在使用pkg.installed状态Salt将检查您的OS的包管理器并查看是否已安装vim.如果包管理器说vim尚未安装,Salt将仅尝试安装vim.
将您的Salt状态保存在sls文件中可以很容易地将它们保存在git或用于跟踪它们的任何vcs中.
您可以跳过sls文件并从命令行有状态地运行命令,如下所示:
salt '*' state.single pkg.installed name=vim
Run Code Online (Sandbox Code Playgroud)