SaltStack 工作示例
在这个工作示例中,我们将创建一个 Salt 公式,用于配置 apache 网络服务器和 PHP 软件。 Salt 是执行临时命令的好方法,但您不会真的希望以这种方式持续配置您的基础设施。通过创建一组 Salt 公式,您可以可靠地复制任何配置。
Salt 公式是简单的 YAML 文本文件,默认情况下位于您的 Salt Master 中
/srv/salt/*。让我们首先创建一个 Salt Formula 来同时安装 Apache Web 服务器和 PHP。
在
/srv/salt/目录下创建一个名为"websetup.sls"的文件,并添加如下代码。
websetup.sls
websetup:
pkg:
-installed
-pkgs:
-apache2
-php5
-php5-mysql
在这个例子中,注意"-pkgs:"参数。"-pkgs:"下面列表中的每一项都将一起传递给操作系统的包管理器一起安装。每当您要安装大量软件包时,这是安装它们的最有效方法。
应用这个公式使用以下命令访问 Salt Master。
root@saltmaster:/home/vagrant# salt 'minion2' state.sls websetup
现在,您将看到以下
输出-
minion2:
----------
ID: websetup
Function: pkg.installed
Result: true
Comment: 3 targeted packages were installed/updated.
Started: 01:50:53.978396
Duration: 86738.132 ms
Changes:
----------
apache2:
----------
new:
2.4.7-1ubuntu4.13
old:
apache2-api-20120211:
----------
new:
1
old:
apache2-bin:
----------
new:
2.4.7-1ubuntu4.13
old:
apache2-data:
----------
new:
2.4.7-1ubuntu4.13
old:
libapache2-mod-php5:
----------
new:
5.5.9+dfsg-1ubuntu4.21
old:
libapr1:
----------
new:
1.5.0-1
old:
libaprutil1:
----------
new:
1.5.3-1
old:
libaprutil1-dbd-sqlite3:
----------
new:
1.5.3-1
old:
libaprutil1-ldap:
----------
new:
1.5.3-1
old:
php5:
----------
new:
5.5.9+dfsg-1ubuntu4.21
old:
php5-cli:
----------
new:
5.5.9+dfsg-1ubuntu4.21
old:
php5-common:
----------
new:
5.5.9+dfsg-1ubuntu4.21
old:
php5-json:
----------
new:
1.3.2-2build1
old:
php5-mhash:
----------
new:
1
old:
php5-mysql:
----------
new:
5.5.9+dfsg-1ubuntu4.21
old:
php5-readline:
----------
new:
5.5.9+dfsg-1ubuntu4.21
old:
phpapi-20121212:
----------
new:
1
old:
ssl-cert:
----------
new:
1.0.33
old:
Summary for minion2
------------
Succeeded: 1 (changed = 1)
Failed: 0
------------
Total states run: 1
Total run time: 86.738 s
现在,您已经在
minion2 中安装了软件包。
Highstate
"highstate"是 Salt 确定应将哪个 Salt 公式应用于某个 minion 的方法。使用以下命令执行"highstate"。
root@saltmaster:/home/vagrant# salt <targets> state.highstate
top.sls
当minion请求执行highstate时,如前所述,minion从Salt master请求top.sls并搜索匹配的公式。默认情况下,此文件位于/srv/salt/top.sls。让我们将公式添加到 top.sls 文件并将 minion2 设置为目标。
base:
'*':
-common
'minion2’:
-websetup
现在,执行
highstate 目标 minion2,如下所示。
root@saltmaster:/home/vagrant# salt 'minion2' state.highstate
应用后,您可以看到以下
输出-
minion2:
----------
ID: common_packages
Function: pkg.installed
Result: true
Comment: All specified packages are already installed
Started: 01:55:17.998824
Duration: 461.615 ms
Changes:
Summary for minion2
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1
Total run time: 461.615 ms
现在,Apache Web 服务器和 PHP 安装在 minion2 中。通过这种方式,我们必须同时使用
top.sls 和
highstate 来定位 Minion,并以最少的工作和最大的灵活性安装所需的软件。