Deployment 是否需要必需品,或者订单是否足够?

Deployment 是否需要必需品,或者订单是否足够?,deployment,requirements,configuration-management,salt-stack,Deployment,Requirements,Configuration Management,Salt Stack,Salt文档中充满了这种模式: apache: pkg: - installed service: - running - require: - pkg: apache 这种重复(“安装apache,现在检查是否安装了apache”)似乎违反了don-don-repeat-yourself(DRY)。那么有必要吗 从“”: 为了实现类似于经典命令式系统的功能,可以省略所有必要条件,然后在主配置中将failhard选项设置为True,这将在第一次出现故

Salt文档中充满了这种模式:

apache:
  pkg:
    - installed
  service:
    - running
    - require:
      - pkg: apache
这种重复(“安装apache,现在检查是否安装了apache”)似乎违反了don-don-repeat-yourself(DRY)。那么有必要吗

从“”:

为了实现类似于经典命令式系统的功能,可以省略所有必要条件,然后在主配置中将failhard选项设置为True,这将在第一次出现故障时停止所有状态运行


这似乎意味着到处使用requisites实际上是可选的(假设声明顺序是正确的)——但我想确定一下

这是0.15年前的遗留问题,当时各州没有自上而下地执行


现在订购就足够了。

这是0.15天前状态没有自上而下执行的遗留问题


现在排序就足够了。

状态现在按照在sls文件中声明的顺序执行。如果您希望确保某个状态在另一个状态之前成功执行,则仍然需要使用“require”

例如,您可能希望在尝试放置配置文件之前确保软件包已正确安装

apache:
  pkg:
    - installed
  file:
    - managed
    - name: /etc/apache/httpd.conf
    - source: salt://apache/httpd.conf
    - require:
      - pkg: apache

如果没有上面示例中的“require”,即使apache pkg安装失败,配置文件也会被放下。

状态现在按照在sls文件中声明的顺序执行。如果您希望确保某个状态在另一个状态之前成功执行,则仍然需要使用“require”

例如,您可能希望在尝试放置配置文件之前确保软件包已正确安装

apache:
  pkg:
    - installed
  file:
    - managed
    - name: /etc/apache/httpd.conf
    - source: salt://apache/httpd.conf
    - require:
      - pkg: apache

在上面的示例中,如果没有“require”,即使apache pkg安装失败,配置文件也会被放置。

因此,在所有这些情况下,顺序是否都受到尊重:顶部文件中的公式、公式中的语句和语句中的函数?您可以在此处阅读:。从历史上看,状态过去是按sls文件的字典顺序排列的,现在不是了。没有其他系统有或有令人惊讶的执行命令。谢谢。奇怪的是,有两个不同的关于状态排序的文档页面(见我链接的那一个)。直到你指出它,我才明白。我将提交一个bug。谢谢。那么,在所有这些情况下,排序都受到尊重吗:顶部文件中的公式、公式中的语句和语句中的函数?您可以在此处阅读:。从历史上看,状态过去是按sls文件的字典顺序排列的,现在不是了。没有其他系统有或有令人惊讶的执行命令。谢谢。奇怪的是,有两个不同的关于状态排序的文档页面(见我链接的那一个)。直到你指出它,我才明白。我将提交一个bug。谢谢。为了发表一点社论,我觉得这个例子很愚蠢,就是为什么你甚至需要“pkg:-已安装”位。salt不能将“require-pkg:apache”解释为“必须安装此软件包,如果它还没有安装,那么现在就安装它”。此外,我知道failhard不是默认设置,但在实践中,对我来说,失败后继续几乎没有意义。我需要把整个盒子完美地安装好——失败是没有好处的。也许它在开发过程中是有用的。为了编辑一点,我觉得这个例子很愚蠢,就是为什么你甚至需要“pkg:-installed”位。salt不能将“require-pkg:apache”解释为“必须安装此软件包,如果它还没有安装,那么现在就安装它”。此外,我知道failhard不是默认设置,但在实践中,对我来说,失败后继续几乎没有意义。我需要把整个盒子完美地安装好——失败是没有好处的。也许它在开发过程中有用。