SaltStack - 工作实例

在这个工作示例中,我们将创建一个Salt公式,该公式将配置apache Web服务器以及PHP软件. Salt是执行ad-hoc命令的好方法,但您不希望以这种方式持续配置基础结构.通过创建一组Salt公式,您可以可靠地重现任何配置.

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

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

websetup.sls

websetup:
   pkg:
      - installed
      - pkgs:
         - apache2
         - php5
         - php5-mysql

在这个例子中,注意" -  pkgs:"参数. " -  pkgs:"下面列表中的每个项目将一起传递给OS的软件包管理器,以便一起安装.每当你有一大堆要安装的软件包时,这是安装它们的最有效方法.

使用以下命令将此公式应用于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".

 
 root @ saltmaster:/home/vagrant #alt< 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 来定位minions,并以最少的工作量和最大的灵活性安装所需的软件.