10.2.3. 盐态和其他特征
虽然远程执行是一个重要的构建块,但它只是 SaltStack 可以做的一小部分。
在设置新机器时,您通常会在安装之前运行许多命令和测试来确定系统的详细信息。 这些操作可以在可重用的配置模板中形式化,称为 状态文件. 然后可以使用单个执行状态文件中描述的操作 状态.应用 盐命令。
为了节省一些时间,您可以依赖社区创建的许多现成的状态文件,这些文件分布在“盐公式”中:
➨ https://docs.saltstack.com/en/latest/topics/development/conventions/formulas. html
还有许多其他功能可以组合:
• 按计划执行操作
• 定义响应 Minion 触发的事件的操作
• 从 Minion 收集数据
• 跨多个 Minion 编排一系列操作
• 在不安装 salt-minion 服务的情况下通过 SSH 应用状态
• 在云基础架构上配置系统并对其进行管理
• 和更多
SaltStack 非常庞大,我们不可能在这里涵盖所有功能。 事实上,有一些专门针对 SaltStack 的书籍,而且在线文档也非常广泛。 如果您想了解有关其功能的更多信息,请查看:
➨ https://docs.saltstack.com/en/latest/
如果您管理大量机器,建议您了解更多有关 SaltStack 的信息,因为您可以在部署新机器时节省大量时间,并且您将能够在整个网络中保持一致的配置。
为了让您体验使用状态文件的方式,我们将介绍一个简单的示例:如何启用 APT 存储库并安装您在第 10.3.3 节“为 APT 创建包存储库”中创建的包[第 269 页] 和第 10.3.2 节,“创建配置包” [第 263 页]。 您还将在 root 的帐户中注册一个 SSH 密钥,以便在出现问题时可以远程登录。
默认情况下,状态文件存储在 /srv/盐 在主人身上; 它们是 YAML 结构化文件,带有 .sls 延期。 就像运行命令一样,应用状态依赖于许多状态模块:
➨ https://docs.saltstack.com/en/latest/topics/tutorials/starting_states.html
➨ https://docs.saltstack.com/en/latest/ref/states/all/
您的 /srv/salt/offsec.sls file 将调用其中三个模块:
offsec_repository:pkgrepo.managed:
- 名称:deb http://pkgrepo.offsec.com offsec-internal main
- 文件:/etc/apt/sources.list.d/offsec.list
- key_url: salt://offsec-apt-key.asc
- 要求输入:
- pkg:offsec-defaults
offsec-defaults:pkg.installed
ssh_key_for_root:ssh_auth.present:
- 用户:root
- 名称:ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali
offsec_repository:pkgrepo.managed:
- 名称:deb http://pkgrepo.offsec.com offsec-internal main
- 文件:/etc/apt/sources.list.d/offsec.list
- key_url: salt://offsec-apt-key.asc
- 要求输入:
- pkg:offsec-defaults
offsec-defaults:pkg.installed
ssh_key_for_root:ssh_auth.present:
- 用户:root
- 名称:ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali
这个 offsec_存储库 国家依赖于 PKGrepo 状态模块。 该示例使用 管理
该状态模块中的函数以注册包存储库。 随着 密钥地址 属性,你
让 salt 知道验证存储库签名所需的(ASCII 装甲)GPG 密钥可以从 /srv/salt/offsec-apt-key.asc 在盐主上。 这 要求输入 属性确保此状态在 offsec-默认值,因为后者需要正确配置存储库才能安装软件包。
这个 offsec-默认值 state 安装同名的包。 这表明键的名称通常是状态的重要值,尽管它总是可以被覆盖 姓名 属性(如对前一个状态所做的那样)。 对于像这样的简单案例,这既可读又简洁。
最后一个状态(ssh_key_for_root) 添加 SSH 密钥 姓名 属性为 /root/.ssh/authorized_keys (目标用户设置在 用户 属性)。 请注意,为了便于阅读,我们在这里缩短了密钥,但您应该将完整的密钥放在 name 属性中。
接下来可以将此状态文件应用于给定的 minion:
服务器# salt kali-scratch state.apply offsec
卡利划痕:
----------
ID:offsec_repository 功能:pkgrepo.managed
名称:deb http://pkgrepo.offsec.com offsec-internal main 结果:True
评论:配置包 repo 'deb http://pkgrepo.offsec.com offsec-internal
➥ 主要的'
开始时间:06:00:15.767794
持续时间:4707.35 毫秒更改:
----------
回购:
deb http://pkgrepo.offsec.com offsec-internal main
----------
ID:offsec-defaults 功能:pkg.installed
结果:真
评论:以下软件包已安装/更新:offsec-defaults 开始:06:00:21.325184
持续时间:19246.041 毫秒更改:
----------
offsec-默认值:
----------
新:
1.0
老的:
----------
ID:ssh_key_for_root 功能:ssh_auth.present
服务器# salt kali-scratch state.apply offsec
卡利划痕:
----------
ID:offsec_repository 功能:pkgrepo.managed
名称:deb http://pkgrepo.offsec.com offsec-internal main 结果:True
评论:配置包 repo 'deb http://pkgrepo.offsec.com offsec-internal
➥ 主要的'
开始时间:06:00:15.767794
持续时间:4707.35 毫秒更改:
----------
回购:
deb http://pkgrepo.offsec.com offsec-internal main
----------
ID:offsec-defaults 功能:pkg.installed
结果:真
评论:以下软件包已安装/更新:offsec-defaults 开始:06:00:21.325184
持续时间:19246.041 毫秒更改:
----------
offsec-默认值:
----------
新:
1.0
老的:
----------
ID:ssh_key_for_root 功能:ssh_auth.present
名称:ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali 结果:True
评论:添加了用户 root 的授权主机密钥 AAAAB3NzaC1yc2...89C4N 开始时间:06:00:40.582539
持续时间:62.103 毫秒更改:
---------- AAAAB3NzaC1yc2...89C4N:
新建
kali-scratch 摘要
------------
成功:3(更改=3)
失败的: 0
------------
运行的总状态: 3
总运行时间:24.015 秒
名称:ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali 结果:True
评论:添加了用户 root 的授权主机密钥 AAAAB3NzaC1yc2...89C4N 开始时间:06:00:40.582539
持续时间:62.103 毫秒更改:
---------- AAAAB3NzaC1yc2...89C4N:
新建
kali-scratch 摘要
------------
成功:3(更改=3)
失败的: 0
------------
运行的总状态: 3
总运行时间:24.015 秒
它也可以通过将其记录在 /srv/salt/top.sls
文件,该文件由 状态.highstate 命令在一次传递中应用所有相关状态:
服务器# 猫/srv/salt/top.sls
根据:
卡利划痕:
- 关闭
服务器# 盐 kali-scratch state.highstate
卡利划痕:
----------
ID:offsec_repository 功能:pkgrepo.managed
名称:deb http://pkgrepo.offsec.com offsec-internal main 结果:True
评论:包 repo 'deb http://pkgrepo.offsec.com offsec-internal main' 已经
➥ 配置开始:06:06:20.650053
持续时间:62.805 毫秒更改:
----------
ID:offsec-defaults 功能:pkg.installed
结果:真
评论:软件包 offsec-defaults 已经安装开始:06:06:21.436193
持续时间:385.092 毫秒更改:
----------
ID:ssh_key_for_root
服务器# 猫/srv/salt/top.sls
根据:
卡利划痕:
- 关闭
服务器# 盐 kali-scratch state.highstate
卡利划痕:
----------
ID:offsec_repository 功能:pkgrepo.managed
名称:deb http://pkgrepo.offsec.com offsec-internal main 结果:True
评论:包 repo 'deb http://pkgrepo.offsec.com offsec-internal main' 已经
➥ 配置开始:06:06:20.650053
持续时间:62.805 毫秒更改:
----------
ID:offsec-defaults 功能:pkg.installed
结果:真
评论:软件包 offsec-defaults 已经安装开始:06:06:21.436193
持续时间:385.092 毫秒更改:
----------
ID:ssh_key_for_root
功能:ssh_auth.present
名称:ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali 结果:True
评论:授权主机密钥 AAAAB3NzaC1yc2...89C4N 已经存在
➥ root用户
开始时间:06:06:21.821811
持续时间:1.936 毫秒更改:
kali-scratch 摘要
------------
成功:3
失败的: 0
------------
运行的总状态: 3
总运行时间:449.833 毫秒
功能:ssh_auth.present
名称:ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali 结果:True
评论:授权主机密钥 AAAAB3NzaC1yc2...89C4N 已经存在
➥ root用户
开始时间:06:06:21.821811
持续时间:1.936 毫秒更改:
kali-scratch 摘要
------------
成功:3
失败的: 0
------------
运行的总状态: 3
总运行时间:449.833 毫秒