如何创建您的第一个盐配方
状态: 已弃用
本文介绍了不再受支持的 Ubuntu 版本。 如果您当前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:
原因: Ubuntu 12.04 已于 2017 年 4 月 28 日终止生命周期 (EOL) and no longer receives security patches or updates. This guide is no longer maintained.
请参阅: 本指南可能仍可用作参考,但可能不适用于其他 Ubuntu 版本。 如果可用,我们强烈建议使用为您正在使用的 Ubuntu 版本编写的指南。 您可以使用页面顶部的搜索功能来查找更新的版本。
[[“%3Ca|http://saltstack.com]]制造商的一篇文章 [[“%3C/a|”>SaltStack]] , 提交人:Dave Boucha
介绍
Salt 是一个很棒的 100% open 源代码配置管理和远程执行工具。 Salt是一种新的基础设施管理方法。 足够简单,可以在几分钟内运行,足够可扩展以管理数万台服务器,并且足够快,可以在几秒钟内与它们通信。
SaltStack 是 Salt 背后令人敬畏的开放公司。 所有 Salt 代码和功能都是在 Apache 2.0 许可下发布的,可以在 https://github.com/saltstack/salt 和您首选的操作系统的包管理器上下载。
在本文中,我们将完成以下工作:
- 创建您的第一个 Salt Formula,它将使用以下软件
本文假设如下:
- 你已经完成了之前的教程 在 Ubuntu 12.04 上安装 Salt
- 您已经以默认 root 用户身份登录
- 我们将假设您的服务器名称是“minion01”。 在您看到“minion01”的任何命令中,将其替换为在
salt-key -L
中找到的服务器名称 - 就是这样!
在关于安装 Salt 的第一篇文章中,我们运行了一些简单的命令,包括安装 Nginx 的命令。 这是执行临时命令的好方法,但您并不真的希望以这种方式持续配置您的基础架构。 通过创建一组 Salt Formulas,您可以反复可靠地重现任何配置。 您的 Salt Formulas 也成为服务器上安装内容的重要文档。 不再想知道在那个壁橱里放了 5 年的旧服务器上有什么!
Salt Formulas 是简单的 yaml 文本文件,默认位于 /srv/salt/
的 Salt Master 中
让我们首先创建一个 Salt Formula 以确保已安装 Vim
。
vi /srv/salt/vim.sls
将以下文本添加到您的 vim.sls:
vim: pkg: - installed
这里发生了什么? 让我描述每一行。
第一行称为ID声明; 本质上是这节的“标签”。 vim
将用于我们的包名。 您在此处使用的名称必须与您的包管理器使用的实际包名称相匹配。 例如,Ubuntu 的“vim”,CentOS 的“vim-core”。 (实际上,ID 声明可以是任意文本,您可以在下面指定实际的包名称,但为了简单起见,我们现在就这样做)
第二行称为 State Declaration。 这是指我们将要使用的特定盐状态。 在本例中,我们使用“pkg”状态。 您可以在此处找到 Salt 提供的所有状态的列表:http://docs.saltstack.com/ref/states/all/index.html。 您甚至可以轻松创建自己的状态!
第三行称为 函数声明 。 这指的是我们将要执行的状态模块中的函数的名称。 在本例中,它是“已安装”的。 注意这里的时态。 盐州是幂等的。 您可以一遍又一遍地执行它们,如果您的服务器已经符合所需的状态,则不会更改服务器上的任何内容。
就这样! 现在我们可以像这样将这个状态应用到我们的服务器上:
salt 'minion01' state.sls vim
如果我们想确保同时从我们的系统中删除 nano 怎么办? 让你的 vim.sls 看起来像这样:
vim: pkg: - installed nano: pkg: - removed
你看到这里的模式了吗?
在下一个示例中,我们将同时安装 Apache Web 服务器和 PHP。 创建一个名为“webserver.sls”的文件:
vi /srv/salt/webserver.sls
让我们将以下内容添加到“webserver.sls”
webserver_stuff: pkg: - installed - pkgs: - apache2 - php5 - php5-mysql
在此示例中,请注意“-pkgs:”参数。 “-pkgs:”下面列表中的每一项都将一起传递给操作系统的包管理器以一起安装。 这意味着只会发生一次对“apt”或“yum”的调用。 如果您要安装大量软件包,这是安装它们的最有效方法。
同样,您可以将此公式应用于您的服务器,如下所示:
salt 'minion01' state.sls webserver
好的,现在我们来看看最后一个安装 git 的例子。 你能猜到我们要怎么做吗?
vi /srv/salt/git.sls
内容:
git: pkg: - installed
再次应用此新配置,请执行以下操作:
salt 'minion01' state.sls git
如果我们想同时应用这些配置中的每一个,我们可以执行以下操作:
salt 'minion01' state.sls vim,webserver,git
容易吧?
现在,在本教程的最后一部分,我们将学习“高态”的概念。 “高状态”是 Salt 动态确定应将哪些 Salt Formulas 应用于某个仆从的一种方式。 首先执行一个像这样的“highstate”:
salt 'minion01' state.highstate
这个命令会导致 Minion 从 Salt Master 下载并检查一个名为“top file”的文件。 默认情况下,此文件位于 Salt Master 的 /srv/salt/top.sls
上。 让我们看看一个基本的顶级文件是什么样子的:
base: '*': - vim 'minion*': - git - webserver 'minion02': - mongodb
在这个例子中 top.sls 我们有一个“基础”环境。 现在我们将只使用默认的“基本”环境。 当 minion 被告知执行 highstate 时,如前所述,minion 向 master 请求 top.sls 并搜索它匹配的公式。 '*' 是一个通配符,意味着 ALL minions 应该应用它下面的公式列表; 在这种情况下,只是“vim”公式。 第四行“minion*”也匹配我们的minion。 这意味着我们的奴才将应用“git”和“webserver”公式。 我们的 minion 确实 NOT 与 'minion02' 匹配,因此我们的 minion 不会尝试应用“mongodb”公式。
您会注意到,在此示例中,我们仅使用标准通配符匹配 minion 的 ID 或名称。 您还可以匹配 pcre、IP 地址和 IP 地址范围、颗粒和其他各种东西。 您可以在此处 找到匹配 的方法列表。
结论
我们创建了一些基本的 Salt 公式,利用 Salt 的内置状态来配置我们的服务器。 这只是你可以用 Salt 做的事情的开始!
SaltStack 官方演练 是了解有关 Salt 的更多信息的好方法。
要了解有关 Salt 可以帮助您管理基础架构的所有方式的更多信息,请阅读 http://docs.saltstack.com 上有关 Salt 的大量文档
请加入伟大的 Salt 社区! 我们的邮件列表可以在 here 找到,我们的 IRC 频道是 freenode 上的#salt。
Salt的开发发生在这里:https://github.com/saltstack/salt
请随时停下来寻求帮助!