在这个工作示例中,我们将创建一个Salt公式,该公式将配置apache Web服务器以及PHP软件. Salt是执行ad-hoc命令的好方法,但您不希望以这种方式持续配置基础结构.通过创建一组Salt公式,您可以可靠地重现任何配置.
Salt公式是简单的YAML文本文件,默认情况下驻留在Salt Master中的/srv/salt/* 的.让我们首先创建一个Salt公式来同时安装Apache Web服务器和PHP.
在/srv/salt/下创建一个名为"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".
root @ saltmaster:/home/vagrant #alt< targets> state.highstate
当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,并以最少的工作量和最大的灵活性安装所需的软件.