SaltStack - 工作示例


在此工作示例中,我们将创建一个 Salt 公式,用于配置 apache Web 服务器以及 PHP 软件。Salt 是执行临时命令的好方法,但您并不真的希望以这种方式持续配置基础设施。通过创建一组 Salt 公式,您可以可靠地重现任何配置。

Salt Formula 是简单的 YAML 文本文件,默认情况下驻留在 Salt Master 的/srv/salt/*中。让我们首先创建一个 Salt Formula 来同时安装 Apache Web 服务器和 PHP。

在/srv/salt/目录下创建一个名为“websetup.sls”的文件并添加以下代码。

网页设置.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”是 Salt 确定应将哪些 Salt Formula 应用于某个 Minion 的一种方式。使用以下命令执行“highstate”。

root@saltmaster:/home/vagrant# salt <targets> state.highstate

顶部.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.slshighstate来定位 Minion ,并以最少的工作和最大的灵活性安装所需的软件。