在SaltStack State状态配置声明中调用执行函数的方法及变化

SALT执行函数

执行函数(简称“远程执行函数”)是从salt命令行调用的命令,它们以salt.module.*开头。执行函数以module.*开头,那是因为它们是Salt初始版本中的第一个也是唯一的模块,如果Salt被重写,我们可能应该改为以 execution.* 开始。
执行函数是SaltStack中的第一大功能模块,截止目前总计有539个子功能模块的实现。
从发展规模上看,Salt State状态管理类的模块排在第2名的位置,目前总计有355个提供各种具体的状态配置管理服务的子模块。

execution函数和state函数的部分列表:
在SaltStack State状态配置声明中调用执行函数的方法及变化_第1张图片在SaltStack State状态配置声明中调用执行函数的方法及变化_第2张图片

SALT执行函数语法

常规的远程执行命令的语法格式是这样的:
salt '' [arguments]
如果是通过命令行方式,那么需要使用salt命令执行。
执行远程命令的风格是类似这样子的:

salt '*' test.version
salt '*.example.org' test.version
salt -G 'os:Ubuntu' test.version

在SaltStack State状态配置声明中调用执行函数的方法及变化_第3张图片

在状态声明中调执行函数

我们都了解的一点是,在salt state状态配置声明中是对配置任务做的一种描述性声明。

  • 执行函数都可以在Salt状态声明中进行调用。
  • 虽然我们在state状态中调用执行函数的行为本身,是违背saltstack状态配置管理的指导思想的,但执行函数是非常巨大的一个资源库,总有一些特殊的配置需求,是暂时只支持以执行远程管理命令的方式进行变更的。
  • 在state状态中调用执行函数时有新、旧两种语法,推荐使用New style。
  • 从salt v3005版本起,将不支持使用Lagecy style调用执行函数。
  • 使用New style前,必须将以下内容添加到目标主机的/etc/salt/minion配置文件中:
use_superseded:
  - module.run

New style & Legacy style

新样式的结构更合理,支持在一个状态配置中调用多个执行函数。
直观地对比一下新、旧两种样式的差别:
在SaltStack State状态配置声明中调用执行函数的方法及变化_第4张图片在SaltStack State状态配置声明中调用执行函数的方法及变化_第5张图片

Salt State & Execution

Salt State状态功能旨在仅进行必要的更改以应用配置,否则不进行更改。 Salt执行函数则每次被调用时都会执行,它可能会导致或不会导致系统更改。

  • 当您调用service.running状态函数时,该函数首先检查服务是否已经运行,并且只在需要时才启动它。
  • 当你调用service.restart执行函数时,服务总是会被重新启动,无论当前是否已经在运行中。

在很多情况下,Salt状态函数是通过包装Salt执行函数来实现的,但添加了额外的代码以帮助确定是否需要真的调用执行函数。

你可能感兴趣的:(SaltStack)