配置管理是SaltStack中最重要的概念之一.它用于创建可重用的配置模板,称为状态.状态描述将系统组件或应用程序置于已知配置所需的所有内容.
Salt State
Salt state是一个可重用的配置系统的特定部分.使用简单的YAML更容易理解和描述状态.
创建一个Salt状态
很容易创建Salt状态.让我们在本章中创建一个简单的状态.移动到目录"salt-vagrant-demo/saltstack/salt/"并创建一个名为 samples.sls 的文件,并在其中添加以下行.
samples.sls
install_network_packages: pkg.installed: - pkgs: - rsync - lftp - curl
现在,保存文件并在Salt master中运行以下命令./p>
root@saltmaster:/home/vagrant# salt 'minion1’ state.apply samples
在这里,我们使用Salt minion中的Salt状态通过 pkg.installed 模块安装 rsync,lftp 和 curl , minion1 的.如果它正常工作,您可以看到如下所示的响应.
它将产生以下输出 :
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: 1Failed: 0------------Total states run: 1Total run time: 545.385 ms
应用Salt State
现在我们已创建使用'.sls'文件并通过专门调用它来应用它的状态. Salt有一个名为 top.sls 文件的默认状态文件.顶级文件用于将多个状态文件应用于Salt minions.顶级文件描述了应该应用状态的位置.好吧,状态和热门文件共同创建SaltStack配置管理功能的核心.
现在让我们创建一个简单的top.sls文件在 saltstack/salt 目录中并添加以下内容.
top.sls
base: '*': - common 'minion1': - samples
这里,状态,通常适用到所有系统状态,样本适用于 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: 1Failed: 0------------Total states run: 1Total run time: 588.210 msminion2:---------- 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: 1Failed: 0------------Total states run: 1Total run time: 602.790 ms
申请批量大小
如果您有大量连接的奴才,然后您可以限制一次更新的系统数量.它是使用 -batch-size 选项执行的,该选项定义如下.
root @ saltmaster:/home/vagrant #salt --batch-size 5'*'state.apply
它将产生以下输出 :
Executing run on ['minion2', 'minion1']jid: 20170314094638482664minion1:---------- 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: 1Failed: 0------------Total states run: 1Total run time: 582.240 msretcode: 0jid: 20170314094638482664minion2:---------- 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: 1Failed: 0------------Total states run: 1Total run time: 605.235 msretcode: 0
盐状态函数
Salt状态函数用于在远程系统上安装和配置应用程序.让我们使用Salt状态函数安装一个"Vim"包.
创建并应用状态函数
创建一个名为"sample.sls"的文件在目录"salt-vagrant-demo/saltstack/salt/sample.sls"下添加以下 :
sample.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: 1Failed: 0------------Total states run: 1Total run time: 553.506 ms
现在,我们添加了一个包"Vim".现在让我们使用Salt测试方法测试包.
Salt State Testing
通过添加"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: 1Failed: 0------------Total states run: 1Total run time: 553.506 ms
SaltStack─支柱组件
Pillar是使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 valuesapachegit
保存文件后,刷新支柱以更新所有更改.
刷新支柱
您可以使用以下内容刷新支柱命令.
root @ saltmaster:/home/vagrant #salt'*'saltutil.refresh_pillar
以上命令用于刷新所有小兵的盐柱数据.
列表支柱数据
列出你可以使用下面给出的命令.
root @ saltmaster:/home/vagrant#salt'*'pillar.ls
它将产生以下输出 :
minion2: - apache - gitminion1: - apache - git
支柱项目
设置支柱后,可以通过支柱模块在minion上查看数据.它可以通过函数 pillar.items 访问,该函数在下面定义.
root @ saltmaster:/home/vagrant #salt'*'pillar.items
它将产生以下输出 :
minion2: ---------- apache: httpd git: gitminion1: ---------- apache: httpd git: git
SaltStack - 包含组件
"包含"组件用于在多个位置定义相同的配置任务.它很容易执行.在州文件的顶部,使用以下格式添加包含 :
include: - state file 1 - state file 2
此处,状态文件1 和状态文件2 是名称您要包含的SLS文件.无需包含 .sls 扩展名.包含的Salt状态将插入当前文件的顶部.
子目录中的状态文件
您可以使用点包含子目录状态文件(.).它充当目录分隔符.
include: - dir.sls1
Grains接口
Grains是一个用于派生底层系统信息的接口.收集谷物用于操作系统,域名,IP地址,内核,操作系统类型,内存和许多其他系统属性.
谷物定位
当定位小兵时可以使用谷物数据,这在下面的代码块中定义.
root @ saltmaster:/home/vagrant #salt - G'os:Ubuntu'test.ping
它将产生以下输出 :
minion1: Trueminion2: True
谷物
可以使用'grains.ls'模块列出谷物,该模块定义如下.
root @ saltmaster:/home/vagrant #salt'*'grains.ls
列表项
赞Pillar,Grains数据也可以使用'grains.items'列出.
root@saltmaster:/home/vagrant# salt '*' grains.items