SALT执行函数
执行函数(简称“远程执行函数”)是从salt命令行调用的命令,它们以salt.module.*
开头。执行函数以module.*开头,那是因为它们是Salt初始版本中的第一个也是唯一的模块,如果Salt被重写,我们可能应该改为以 execution.*
开始。
执行函数是SaltStack中的第一大功能模块,截止目前总计有539个子功能模块的实现。
从发展规模上看,Salt State状态管理类的模块排在第2名的位置,目前总计有355个提供各种具体的状态配置管理服务的子模块。
execution函数和state函数的部分列表:
SALT执行函数语法
常规的远程执行命令的语法格式是这样的:salt '<target>' <function> [arguments]
如果是通过命令行方式,那么需要使用salt命令执行。
执行远程命令的风格是类似这样子的:
salt '*' test.version
salt '*.example.org' test.version
salt -G 'os:Ubuntu' test.version
在状态声明中调执行函数
我们都了解的一点是,在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
新样式的结构更合理,支持在一个状态配置中调用多个执行函数。
直观地对比一下新、旧两种样式的差别:
Salt State & Execution
Salt State状态功能旨在仅进行必要的更改以应用配置,否则不进行更改。 Salt执行函数则每次被调用时都会执行,它可能会导致或不会导致系统更改。
- 当您调用service.running状态函数时,该函数首先检查服务是否已经运行,并且只在需要时才启动它。
- 当你调用service.restart执行函数时,服务总是会被重新启动,无论当前是否已经在运行中。
在很多情况下,Salt状态函数是通过包装Salt执行函数来实现的,但添加了额外的代码以帮助确定是否需要真的调用执行函数。
来源:oschina
链接:https://my.oschina.net/u/4350719/blog/4480724