📜  SaltStack-配置管理

📅  最后修改于: 2020-10-31 14:25:54             🧑  作者: Mango


配置管理是SaltStack中最重要的概念之一。它用于创建称为state的可重用配置模板。状态描述了将系统组件或应用程序置于已知配置所需的一切。

盐州

盐状态是系统特定部分的可重用配置。使用简单的YAML,状态更容易理解和描述。

创建盐状态

盐状态很容易产生。让我们在本章中创建一个简单的状态。移至目录“ salt-vagrant-demo / saltstack / salt /”,然后创建一个名为samples.sls的文件,并在其中添加以下几行。

样品

install_network_packages:
   pkg.installed:
      - pkgs:
         - rsync
         - lftp
         - curl

现在,保存文件并在Salt master中运行以下命令。

root@saltmaster:/home/vagrant# salt 'minion1’ state.apply samples

在这里,我们安装的rsync,lftp的卷曲通过pkg.installed模块使用盐状态盐奴才,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

应用盐状态

现在,我们已经使用’.sls’文件创建了一个状态,并通过专门调用它来应用它。 Salt具有一个默认状态文件,称为top.sls文件。最顶层的文件用于将多个状态文件应用于Salt奴才。最上面的文件描述了应在何处应用状态。好吧, StatesTop文件一起创建了SaltStack配置管理功能的核心。

现在让我们在saltstack / salt目录中创建一个简单的top.sls文件,并添加以下内容。

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状态函数安装“ Vim”软件包。

创建和应用状态功能

在目录“ salt-vagrant-demo / saltstack / salt / sample.sls”下创建一个名为“ 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测试方法测试包装。

盐状态测试

通过在状态中添加“ 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─支柱组件

支柱是使盐状态可重用的重要组成部分。它用于为使用目标分配的奴才定义安全数据。盐柱数据存储诸如端口,文件路径,配置参数和密码之类的值。

支柱配置文件

下面显示了主配置文件中post_root的配置-

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

上面的命令用于刷新所有小兵的Salt支柱数据。

列出支柱数据

要列出支柱数据,可以使用下面给出的命令。

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

它将产生以下输出

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

支柱项目

设置支柱后,即可通过支柱模块在小兵上查看数据。可以通过以下定义的函数column.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 

谷物界面

谷物是用于导出有关底层系统信息的接口。收集操作系统,域名,IP地址,内核,操作系统类型,内存和许多其他系统属性的谷物。

谷物定位

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

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

它将产生以下输出

minion1:
   True
minion2:
   True

列出谷物

可以使用下面定义的“ grains.ls”模块列出谷物。

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

清单项目

与“支柱”一样,也可以使用“ grains.items”列出谷物数据。

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