📅  最后修改于: 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奴才。最上面的文件描述了应在何处应用状态。好吧, States和Top文件一起创建了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
支柱是使盐状态可重用的重要组成部分。它用于为使用目标分配的奴才定义安全数据。盐柱数据存储诸如端口,文件路径,配置参数和密码之类的值。
下面显示了主配置文件中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
“包含”组件用于在多个位置定义相同的配置任务。这很容易执行。在状态文件的顶部,使用以下格式添加包含:
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