SaltStack - 配置管理

配置管理是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: 1
Failed:    0
------------
Total states run:     1
Total 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: 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

申请批量大小

如果您有大量连接的奴才,然后您可以限制一次更新的系统数量.它是使用 -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状态函数用于在远程系统上安装和配置应用程序.让我们使用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: 1
Failed:    0
------------
Total states run:     1
Total 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: 1
Failed:    0
------------
Total states run:     1
Total 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 values
apache
git

保存文件后,刷新支柱以更新所有更改.

刷新支柱

您可以使用以下内容刷新支柱命令.

 
 root @ saltmaster:/home/vagrant #salt'*'saltutil.refresh_pillar

以上命令用于刷新所有小兵的盐柱数据.

列表支柱数据

列出你可以使用下面给出的命令.

 
 root @ saltmaster:/home/vagrant#salt'*'pillar.ls

它将产生以下输出 :

minion2:
   - apache
   - git
minion1:
   - apache
   - git

支柱项目

设置支柱后,可以通过支柱模块在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 扩展名.包含的Salt状态将插入当前文件的顶部.

子目录中的状态文件

您可以使用点包含子目录状态文件(.).它充当目录分隔符.

include:
   - dir.sls1

Grains接口

Grains是一个用于派生底层系统信息的接口.收集谷物用于操作系统,域名,IP地址,内核,操作系统类型,内存和许多其他系统属性.

谷物定位

当定位小兵时可以使用谷物数据,这在下面的代码块中定义.

 
 root @ saltmaster:/home/vagrant #salt  - G'os:Ubuntu'test.ping

它将产生以下输出 :

minion1:
   True
minion2:
   True

谷物

可以使用'grains.ls'模块列出谷物,该模块定义如下.

 
 root @ saltmaster:/home/vagrant #salt'*'grains.ls

列表项

赞Pillar,Grains数据也可以使用'grains.items'列出.

root@saltmaster:/home/vagrant# salt '*' grains.items