- SaltStack 教程
- SaltStack - 主页
- SaltStack - 概述
- SaltStack - 架构
- SaltStack - 竞争对手
- SaltStack - 安装
- 创建一个简单的环境
- SaltStack - 访问控制系统
- SaltStack - 作业管理
- SaltStack - Salt 文件服务器
- SaltStack - Git 作为文件服务器
- 使用MinionFS作为文件服务器
- SaltStack - 将 Cron 与 Salt 结合使用
- SaltStack - 远程执行
- 配置管理
- SaltStack - 日志记录
- SaltStack - 通过 SSH 进行加盐
- 云基础设施的盐
- SaltStack - Salt 代理 Minion
- SaltStack - 事件系统
- SaltStack - 编排
- SaltStack - Salt 包管理器
- SaltStack - Python API
- SaltStack - 工作示例
- SaltStack 有用资源
- SaltStack - 快速指南
- SaltStack - 有用的资源
- SaltStack - 讨论
SaltStack - 配置管理
配置管理是 SaltStack 中最重要的概念之一。它用于创建可重用的配置模板,称为状态。状态描述了将系统组件或应用程序置于已知配置中所需的一切。
盐州
盐状态是系统特定部分的可重用配置。使用简单的 YAML 更容易理解和描述状态。
创建盐态
盐态很容易创建。让我们在本章中创建一个简单的状态。移动到目录“salt-vagrant-demo/saltstack/salt/”并创建一个名为samples.sls的文件并在其中添加以下行。
样本.sls
install_network_packages: pkg.installed: - pkgs: - rsync - lftp - curl
现在,保存文件并在 Salt master 中运行以下命令。
root@saltmaster:/home/vagrant# salt 'minion1’ state.apply samples
在这里,我们使用 salt minion minion1中的 Salt 状态通过pkg.installed模块安装了rsync、lftp和curl。如果工作正常,您可以看到如下所示的响应。
它将产生以下输出-
minion1: ---------- ID: install_network_packages Function: pkg.installed Result: True Comment: All specified packages are already installed Started: 08:08:48.612336 Duration: 545.385 ms Changes: Summary for minion1 ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1 Total run time: 545.385 ms
应用盐状态
现在我们已经使用“.sls”文件创建了一个状态,并通过专门调用它来应用它。Salt 有一个名为top.sls文件的默认状态文件。顶部文件用于将多个状态文件应用到 Salt Minion。顶部文件描述了应在何处应用状态。好吧,States和Top 文件共同创建了 SaltStack 配置管理功能的核心。
现在让我们在saltstack/salt目录中创建一个简单的 top.sls 文件并添加以下内容。
顶部.sls
base: '*': - common 'minion1': - samples
这里,state通常适用于所有系统状态,示例适用于minion1。
接下来,运行 Salt master 并应用如下所示的状态。
root@saltmaster:/home/vagrant# salt '*' state.apply
它将产生以下输出-
minion1: ---------- ID: common_packages Function: pkg.installed Result: True Comment: All specified packages are already installed Started: 09:33:35.642355 Duration: 588.21 ms Changes: Summary for minion1 ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1 Total run time: 588.210 ms minion2: ---------- ID: common_packages Function: pkg.installed Result: True Comment: All specified packages are already installed Started: 09:33:35.890331 Duration: 602.79 ms Changes: Summary for minion2 ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1 Total run time: 602.790 ms
应用批量大小
如果您有大量连接的 Minion,那么您可以限制一次更新的系统数量。它是通过使用–batch-size选项来执行的,该选项的定义如下。
root@saltmaster:/home/vagrant# salt --batch-size 5 '*' state.apply
它将产生以下输出-
Executing run on ['minion2', 'minion1'] jid: 20170314094638482664 minion1: ---------- ID: common_packages Function: pkg.installed Result: True Comment: All specified packages are already installed Started: 09:46:41.228519 Duration: 582.24 ms Changes: Summary for minion1 ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1 Total run time: 582.240 ms retcode: 0 jid: 20170314094638482664 minion2: ---------- ID: common_packages Function: pkg.installed Result: True Comment: All specified packages are already installed Started: 09:46:41.153609 Duration: 605.235 ms Changes: Summary for minion2 ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1 Total run time: 605.235 ms retcode: 0
盐态函数
盐状态函数用于在远程系统上安装和配置应用程序。让我们使用 Salt 状态功能安装一个“Vim”包。
创建并应用状态函数
在目录“salt-vagrant-demo/saltstack/salt/sample.sls”下创建一个名为“sample.sls”的文件,并添加以下内容 -
样本.sls
install vim: pkg.installed: - name: vim
Vagrant 环境启动后,运行 salt master 并通过运行以下命令应用sample.sls。
root@saltmaster:/home/vagrant# sudo salt 'minion2’ state.apply sample
它将产生以下输出-
minion2: ---------- ID: install vim Function: pkg.installed Name: vim Result: True Comment: Package vim is installed Started: 15:07:45.752764 Duration: 553.506 ms Changes: Summary for minion2 ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1 Total run time: 553.506 ms
现在,我们添加了一个包“Vim”。现在让我们使用 Salt 测试方法来测试该包。
盐态测试
通过向状态添加“test = True”选项来强制执行测试。返回信息将以黄色显示将应用的状态,并且结果报告为“无”。
以下命令用于测试状态 -
root@saltmaster:/home/vagrant# sudo salt 'minion2’ state.apply sample test = True
它将产生以下输出-
minion2: ---------- ID: install vim Function: pkg.installed Name: vim Result: True Comment: Package vim is already installed Started: 15:07:45.752764 Duration: 553.506 ms Changes: Summary for minion2 ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1 Total run time: 553.506 ms
SaltStack ─ 支柱组件
Pillar 是使 Salt 状态可重用的重要组件。它用于定义使用目标分配的 Minion 的安全数据。Salt Pillar 数据存储端口、文件路径、配置参数和密码等值。
支柱配置文件
主配置文件中的pillar_roots的配置如下所示 -
pillar_roots: base: - /srv/pillar
在这里,该文件位于“/srv/pillar”目录中。
考虑一下,位于 /srv/pillar/top.sls 的顶部文件具有以下结构 -
base: '*': - default
现在,移至位于 /srv/pillar/default.sls 中的 default.sls 文件并添加以下代码。
# Default pillar values apache git
保存文件后,刷新支柱以更新所有更改。
刷新支柱
您可以使用以下命令刷新支柱。
root@saltmaster:/home/vagrant# salt '*' saltutil.refresh_pillar
上面的命令用于刷新所有minion上的Saltpillar数据。
列出支柱数据
要列出支柱数据,您可以使用下面给出的命令。
root@saltmaster:/home/vagrant# salt '*' pillar.ls
它将产生以下输出-
minion2: - apache - git minion1: - apache - git
支柱项目
一旦 Pillar 设置完毕,就可以通过 Pillar 模块在 Minion 上查看数据。可以通过下面定义的函数pillar.items访问它。
root@saltmaster:/home/vagrant# salt '*' pillar.items
它将产生以下输出-
minion2: ---------- apache: httpd git: git minion1: ---------- apache: httpd git: git
SaltStack – 包含组件
“包含”组件用于在多个位置定义相同的配置任务。它很容易执行。在状态文件的顶部,使用以下格式添加包含内容 -
include: - state file 1 - state file 2
此处,状态文件 1和状态文件 2是您要包含的 SLS 文件的名称。无需包含.sls扩展名。包含的盐状态将插入到当前文件的顶部。
子目录中的状态文件
您可以使用点 (.) 包含子目录状态文件。它充当目录分隔符。
include: - dir.sls1
谷物接口
Grains是一个用于获取底层系统信息的接口。收集操作系统、域名、IP 地址、内核、操作系统类型、内存和许多其他系统属性的颗粒。
谷物靶向
在定位 Minion 时可以使用 Grain 数据,它在以下代码块中定义。
root@saltmaster:/home/vagrant# salt -G 'os:Ubuntu' test.ping
它将产生以下输出-
minion1: True minion2: True
上市谷物
可以使用“grains.ls”模块列出 Grain,该模块的定义如下。
root@saltmaster:/home/vagrant# salt '*' grains.ls
列出项目
与 Pillar 一样,Grains 数据也可以使用“grains.items”列出。
root@saltmaster:/home/vagrant# salt '*' grains.items