【发布时间】:2017-11-11 04:39:37
【问题描述】:
最近,我正在向它的文档学习 salt。但是,我对执行模块和状态模块感到很困惑。为什么有两种类型的模块?为什么不能统一?如果我们只有一种可以在命令行和sls文件中使用的模块,不是更简单更好吗?
【问题讨论】:
-
可能值得一提的是,状态模块最终将只是对执行模块的调用。 (很抱歉这么快速和不完整的答案,但我没有足够的声誉来发表简单的评论)
标签: salt salt-stack
最近,我正在向它的文档学习 salt。但是,我对执行模块和状态模块感到很困惑。为什么有两种类型的模块?为什么不能统一?如果我们只有一种可以在命令行和sls文件中使用的模块,不是更简单更好吗?
【问题讨论】:
标签: salt salt-stack
它们的设计目的是对仆从执行任务。例如:mysql.query 将查询指定的数据库。执行模块不检查是否需要查询数据库。它只是执行它的任务。
查看完整的模块列表,您会发现它们只会为您执行一项任务。 https://docs.saltstack.com/en/latest/ref/modules/all/index.html
它被称为状态模块。
状态模块也是一个模块。但它是一个特殊的。使用 states 模块,您可以为 Minions 创建状态(/srv/salt 下的 sls 文件)。
例如,您可以创建一个状态,以确保 Minion 具有为 www.example.com 配置的 Web 服务器。
创建状态后,您可以使用 states 模块应用它:
salt <minion> state.apply example_webserver
example_webserver 状态指定 Minion 需要拥有的东西。如果 Minion 已经处于正确的状态,它什么也不做。如果 Minion 的状态不正确,它会尝试到达那里。
状态模块可以在这里找到:https://docs.saltstack.com/en/latest/ref/states/all/salt.states.module.html
【讨论】: