状态文件中的函数和 saltstack 命令行中的函数有什么区别?
what's the differences between functions in state file and functions in command line in saltstack?
当我使用 saltstack
来管理我的服务器时。我发现一个有趣的事情:
当我 运行 salt '*' pkg.installed httpd
时,我收到以下消息:pkg.installed is not available
。但是我可以在我的 .sls
文件中使用 pkg.installed
函数,而且效果很好。所以,我对此感到困惑。我认为这是因为 saltstack
.
谁能帮帮我?
这里有两个相关但不同的概念。
- Salt 执行模块
- 盐态模块。
执行模块是大部分工作实际发生的地方,通常也是您在命令行上 运行 的地方。例如:
salt '*' pkg.install vim
这将直接调用您的 OS 的包管理器,例如 yum 或 apt,并安装 vim。
状态模块是有状态的命令,它们位于 "above" 执行模块中。状态模块将检查所需的结果是否已经存在,并进行任何必要的更改以获得所需的状态。它们与执行模块的结合方式不同。例如在这个盐状态文件(sls 文件)中:
cat /srv/salt/vim.sls
install_vim_please:
pkg.installed:
- name: vim
然后你可以运行 state.sls
执行模块来应用这个具有 pkg.installed
状态的 sls 文件。
salt '*' state.sls vim
因为我们正在使用 pkg.installed
状态 Salt 将检查您的 OS 的包管理器并查看 vim 是否已经安装。如果包管理器说 vim 还没有安装,Salt 只会尝试安装 vim。
将您的 Salt States 保存在 sls 文件中可以轻松地将它们保存在 git 或您用来跟踪它们的任何 vcs 中。
您可以像这样从命令行有状态地跳过 sls 文件和 运行 命令:
salt '*' state.single pkg.installed name=vim
当我使用 saltstack
来管理我的服务器时。我发现一个有趣的事情:
当我 运行 salt '*' pkg.installed httpd
时,我收到以下消息:pkg.installed is not available
。但是我可以在我的 .sls
文件中使用 pkg.installed
函数,而且效果很好。所以,我对此感到困惑。我认为这是因为 saltstack
.
谁能帮帮我?
这里有两个相关但不同的概念。
- Salt 执行模块
- 盐态模块。
执行模块是大部分工作实际发生的地方,通常也是您在命令行上 运行 的地方。例如:
salt '*' pkg.install vim
这将直接调用您的 OS 的包管理器,例如 yum 或 apt,并安装 vim。
状态模块是有状态的命令,它们位于 "above" 执行模块中。状态模块将检查所需的结果是否已经存在,并进行任何必要的更改以获得所需的状态。它们与执行模块的结合方式不同。例如在这个盐状态文件(sls 文件)中:
cat /srv/salt/vim.sls
install_vim_please:
pkg.installed:
- name: vim
然后你可以运行 state.sls
执行模块来应用这个具有 pkg.installed
状态的 sls 文件。
salt '*' state.sls vim
因为我们正在使用 pkg.installed
状态 Salt 将检查您的 OS 的包管理器并查看 vim 是否已经安装。如果包管理器说 vim 还没有安装,Salt 只会尝试安装 vim。
将您的 Salt States 保存在 sls 文件中可以轻松地将它们保存在 git 或您用来跟踪它们的任何 vcs 中。
您可以像这样从命令行有状态地跳过 sls 文件和 运行 命令:
salt '*' state.single pkg.installed name=vim