SaltStack 库中的 Modules:
在 SaltStack 中,每个子系统插件(plug-in)都是一个 Python Module。因此,SaltStack 库中的 Module 可以看作是一组 functions(例如:aka 命令);可以看作是一个应用(例如:mysql、docker);可以看作是一个系统组件(例如:disk、file);还可以看作是一个外部系统(gitfs)。
使用 SaltStack 库中的 Modules 需要注意以下几点:
(1).所有的模块都在 salt 目录下,每个子系统又通过不同的子目录进行区分 ,最后每个具体的 modile 将以单独的 .py 文件呈现出来;
(2).各个模块以
salt
.subsystem.module 的格式命名,其中
subsystem 代表子系统,
module代表子系统模块名。
注意:由于执行(execution)模块是 Salt 最先有的模块,因此其以
salt.module 的形式命名;
(3).各个模块内包含了我们所需的 functions。
SaltStack 库中的 Functions:
在 SaltStack 中,Functions 相当于动词。
SaltStack 库中 Functions 的形参(Arguments):
1.在命令行模式指定 Functions 的形参
一般而言,Functions 中必选的形参将最先被指定,同时以特定的顺序排列。而非必选的形参则
都带有默认值。
当以 Salt 命名行模式调用 Function 时,如果形参没有以
argument=value 的形式指定,而是仅以值的形式指定,那么我们需要以空格隔开,并以特定的顺序指定形参。如果以
argument=value 的形式则无所谓。
例如:定义了如下 Function
>>>
salt.modules.useradd.add(name, uid=None, gid=None, groups=None, home=None,
shell=None, unique=True, system=False, fullname='', oomnumber='',
workphone='', homephone='', createhome=True, loginclass=None)
则以命令行模式调用如下。
>>>
salt '*' user.add fred shell=/bin/zsh
注意:当使用可变形参(
可变无名参数 *args 和可变关键字参数 **kw )时,则可变无名形参直接以值形式填入,而可变关键字参数以
argument=value 的形式指定。
例如:指定了 1 个可变无名形参以及 3 个可变关键字形参。
>>>
salt '*' network.connect google-public-dns-a.google.com port=53 proto=udp timeout=3
2.状态(State)系统的形参指定
State 系统的形参保存于 state file 中,基于
YAML 的语法。
例如:salt.states.user.present 定义如下。
>>>
salt.states.user.present(name, uid=None, gid=None, gid_from_name=False,
groups=None, optional_groups=None, remove_groups=True, home=None,
createhome=True, password=None, hash_password=False, enforce_password=True,
empty_password=False, shell=None, unique=True, system=False, fullname=None,
roomnumber=None, workphone=None, homephone=None, loginclass=None, date=None,
mindays=None, maxdays=None, inactdays=None, warndays=None, expire=None,
win_homedrive=None, win_profile=None, win_logonscript=None,
win_description=None)
则在 state file 中,以 YAML 语法指定类似如下。
a state example that calls user.present:
user.present:
- name: fred
- shell: /bin/zsh
参考连接:
https://docs.saltstack.com/en/getstarted/system/python.html