如何在 Ubuntu 14.04 上安装和配置 Salt 主服务器和仆从服务器

介绍

SaltStack 是一个强大的、灵活的、高性能的配置管理和远程执行系统,可以用来从集中位置管理您的基础设施,同时最大限度地减少手动维护步骤。

在本文中,我们将专注于设置一个Salt主服务器来管理您的基础设施,我们还将展示如何在其他计算机上安装Salt minion daemon,以便使用Salt来管理它们。

前提条件

要开始,你应该至少有两个 Ubuntu 14.04 服务器实例. 这些必须有一个非根用户配置与sudo特权. 你可以学习如何创建和配置这些用户,通过遵循我们的 Ubuntu 14.04 初始服务器设置指南

当您准备好开始时,请与您的sudo用户登录您希望使用的服务器作为盐大师,我们将先配置此机器。

安装大师戴蒙

盐大师戴蒙可以在Ubuntu 14.04上以多种方式安装,以下是每个方法的优点和缺点的简要概述:

  • Ubuntu SaltStack PPA : 使用Ubuntu原生包管理工具来安装和更新所需的软件. 这是安装的最简单的方法,但正如本文写作时的那样,这些包可以显著过时。
  • Salt-Bootstrap : 这个启动脚本试图提供一个更通用的方法来安装和配置盐。 它可以尝试使用可用的原生软件工具,这意味着它仍然可以尝试从上面的PPA安装。

下面我们将概述如何使用Ubuntu PPA方法进行安装,我们还将提供如何使用salt-bootstrap脚本来安装Salt master的稳定和开发版本的说明。

选择哪个选项最适合您的需求是由您决定的。如果您遇到问题,可能会在开发版本中提供错误修复,但也有可能遇到新发布的错误。

从官方PPA安装稳定版本

从Ubuntu PPA安装是最直接的安装方法。

要开始,您需要将SaltStack PPA添加到您将作为主机使用的服务器上。

1sudo add-apt-repository ppa:saltstack/salt

一旦您确认了PPA添加,它将被添加到您的系统中。 要索引内部可用的新包,您将需要更新本地的包索引。

1sudo apt-get update
2sudo apt-get install salt-master salt-minion salt-ssh salt-cloud salt-doc

在上述命令中,我们安装了盐大师和微型大师,这将使我们能够使用盐来控制我们的主服务器,我们还安装了salt-sshsalt-cloud,这在我们如何连接和控制资源方面提供了更多的灵活性。

此时,您已完成 Salt 主机安装,转到 初始主机配置部分以启动并启动您的新服务。

使用 Salt-Bootstrap 安装稳定版本

直接使用PPA的替代方案是使用salt-bootstrap脚本安装稳定版本,这是可以从SaltStack网站下载的。您可能选择使用这种方法来安装稳定系统的上面的方法之一是,它从包管理器中抓住了一些依赖性。

要开始,请移动到您的主目录或其他地方,您可以使用‘curl’来下载 bootstrap 脚本,我们将遵循 salt-bootstrap GitHub 页面的指示,并使用他们选择的输出名称以提供清晰度:

1cd ~
2curl -L https://bootstrap.saltstack.com -o install_salt.sh

在此时刻,看看脚本,以确保它不做任何你不批准的事情:

1less ~/install_salt.sh

Salt-bootstrap 脚本由 SaltStack 团队维护,但在运行它们之前,您应该始终检查外部脚本的内容。

当你对所采取的行动感到满意时,通过将其传递到sh来运行脚本。我们将使用-P旗帜,以便脚本可以使用pip作为依赖源,如有必要。如果没有这个旗帜,安装可能会失败。我们还需要包含-M旗帜,以便安装盐大师大师。所有盐助手实用程序将自动包括在内。

我们需要的完整命令是:

1sudo sh install_salt.sh -P -M

此时,您已完成 Salt 主机安装,转到 初始主机配置部分以启动并启动您的新服务。

使用 Salt-Bootstrap 安装开发版本

我们还可以使用salt-bootstrap脚本来安装使用git的 Salt 开发版本,这可以帮助您访问更新的功能,更重要的是,您可以访问可能不在 PPA 版本中提供的更新的错误修复。

所需的脚本是我们上面使用的相同的salt-bootstrap脚本. 只有我们使用的选项将有所不同. 考虑到这一点,如果您还没有脚本,请将其下载到您的主目录:

1cd ~
2curl -L https://bootstrap.saltstack.com -o install_salt.sh

再次,看看脚本,以确保您对它所执行的操作正常:

1less ~/install_salt.sh

当你满意时,你可以将脚本传输到sh来执行它. 我们会添加P标志来告诉脚本,如有必要,以获得pip的依赖性。 包含M标志来指定我们想要安装盐大师。 我们会用git develop结束命令,告诉脚本我们想要使用SaltStack GitHub repo(https://github.com/saltstack/salt)来安装最新的开发版本,而不是 Ubuntu PPA。

我们需要的完整命令是:

1sudo sh install_salt.sh -P -M git develop

此时,您已完成 Salt 主机安装,接下来,我们将配置主机,以便新服务启动并运行。

初始大师配置

接下来,我们需要配置盐大师。

创建盐目录结构

首先,我们将创建配置管理目录结构,其中盐主将搜索各种文件. 这些都是默认的 /srv 目录下。 我们需要 /srv/salt/srv/pillar 才能开始。

1sudo mkdir -p /srv/{salt,pillar}

更改 Salt Master 配置

接下来,我们将调整 Salt master 配置文件. 在文本编辑器中打开sudo特权的文件:

1sudo nano /etc/salt/master

我们要做的第一件事是设置file_roots字典,这基本上指定了盐大师将寻找配置管理指令的位置,而base则指定了默认环境,我们之前创建的两个目录将用于此目的,而/srv/salt将用于管理员创建的指令,而/srv/formulas则将用于从外部来源下载的预装配置:

1[label /etc/salt/master]
2file_roots:
3  base:
4    - /srv/salt
5    - /srv/formulas

<$>[注] [标签注] 复制给定的格式很重要. Salt 使用 YAML 风格的配置文件. 这些需要严格注意间隔和插入,以便对值进行正确的解释。

接下来,我们将为我们的盐柱配置设置根目录,这看起来非常类似于上面的配置,并使用我们创建的第三个目录:

1[label /etc/salt/master]
2pillar_roots:
3  base:
4    - /srv/pillar

这是我们目前需要配置的主机的所有内容. 保存并关闭文件,当您完成时。

更改 Salt Minion 配置

我们还在这个机器上安装了 Salt minion daemon,以便我们可以按照我们的其他基础设施政策保持它。

1sudo nano /etc/salt/minion

我们需要做的唯一的改变是指定这个小子应该连接的主机,在这种情况下,小子应该连接到在同一台机器上运行的主流程,设置大师键等于本地回路地址127.0.0.1,以便小子正确连接:

1[label /etc/salt/minion]
2master: 127.0.0.1

保存并关闭文件,当你完成。

重新启动流程

现在,我们需要重新启动盐大师和小鬼,以便使用我们的新配置:

1sudo restart salt-master
2sudo restart salt-minion

两者都将重新启动,考虑到我们所描述的配置变化。

使用 Minion 钥匙

重新启动后,Salt Minion Daemon 会自动与 Salt Master 联系,作为管理员,您只需要验证并接受 Minion 的密钥以允许通信。

首先,列出盐大师所知道的所有密钥:

1sudo salt-key --list all

下面的saltmaster应该匹配您的系统的 Salt minion ID. 这是您服务器的主机名称:

1[secondary_label Output]
2Accepted Keys:
3Denied Keys:
4Unaccepted Keys:
5saltmaster
6Rejected Keys:

正如你所看到的,我们的盐小伙子已将钥匙发送给主人,但它尚未被接受,为了安全目的,在接受钥匙之前,我们将运行两个命令。

我们需要确保这个输出(这告诉我们盐小子生成的密钥的指纹):

1sudo salt-call key.finger --local
1[secondary_label Output]
2local:
3    24:c8:77:1d:ed:10:d7:b0:3e:bc:bc:ed:41:e1:5a:d1

匹配在这里找到的指纹(索尔大师被要求接受的密钥的指纹)。

1sudo salt-key -f saltmaster
1[secondary_label Output]
2Unaccepted Keys:
3saltmaster: 24:c8:77:1d:ed:10:d7:b0:3e:bc:bc:ed:41:e1:5a:d1

一旦您验证这些值是相同的,您可以通过输入接受密钥:

1sudo salt-key -a saltmaster

接受密钥后,您可以看到密钥已移动到接受密钥部分:

1sudo salt-key --list all
1[secondary_label Output]
2Accepted Keys:
3saltmaster
4Denied Keys:
5Unaccepted Keys:
6Rejected Keys:

现在,您可以通过键入测试盐大师和小子过程是否正确通信:

1sudo salt '*' test.ping

您应该收到回信,表明健康检查成功:

1[secondary_label Output]
2saltmaster:
3    True

您的盐主服务器现在已配置,我们可以继续演示如何设置额外的盐小子服务器。

安装单独的迷你

现在我们有我们的盐主服务器并顺利运行,我们可以演示如何将一个新的服务器带入盐的控制之下。

再次,我们有多个方法来安装所需的软件,但 您应该匹配主服务器使用的方法 . 这将确保您没有Salt master和minion之间的版本不匹配。

当你准备好时,与你的sudo用户登录你的第二台服务器。

从官方PPA安装稳定大师

如果您从 SaltStack PPA 安装了 Salt 主服务器,您可以在 Ubuntu 微型服务器上添加相同的 PPA:

1sudo add-apt-repository ppa:saltstack/salt

這次,我們只需要安裝「salt-minion」執行程式. 添加PPA後更新您的本地包索引,並通過輸入安裝軟件:

1sudo apt-get update
2sudo apt-get install salt-minion

你的盐小子现在应该安装。 跳到 配置你的小子的部分。

使用 Salt-Bootstrap 安装稳定版本

如果您使用salt-bootstrap安装了稳定版本,您可以将相同的脚本下载到您的 minion 机器:

1cd ~
2curl -L https://bootstrap.saltstack.com -o install_salt.sh

我们将以几乎相同的方式称呼脚本,就像我们在盐大师上一样。唯一的区别是我们忽略了M旗帜,因为我们不需要安装主工具和魔鬼:

1sudo sh install_salt.sh -P

你的盐小子现在应该安装。 跳到 配置你的小子的部分。

使用 Salt-Bootstrap 安装开发版本

如果您使用salt-bootstrap安装了Salt master上的当前开发版本,您可以使用相同的脚本安装伴侣minion过程。

1cd ~
2curl -L https://bootstrap.saltstack.com -o install_salt.sh

我们需要安装的命令几乎与我们在主机上使用的命令相同,唯一的区别是,我们正在放弃-M旗帜,表示我们不需要盐主工具和大卫:

1sudo sh install_salt.sh -P git develop

当你完成时,继续配置你的minion实例。

设置小组

现在我们已经安装了minion,我们可以继续进行并配置它以与我们的盐大师进行通信。

获取盐大师公共密钥指纹

在我们开始之前,我们应该抓住盐大师的关键指纹,我们可以将其添加到我们的微型配置中,以增加安全性。

在您的盐主服务器上,键入:

1sudo salt-key -F master

输出应该像这样的东西:

1[secondary_label Output]
2Local Keys:
3master.pem:  12:db:25:3d:7f:00:a3:ed:20:55:94:ca:18:f8:67:97
4master.pub:  7b:97:23:4b:a4:6d:16:31:2d:c9:e3:81:e2:d5:32:92
5Accepted Keys:
6saltmaster: 24:c8:77:1d:ed:10:d7:b0:3e:bc:bc:ed:41:e1:5a:d1

位于本地密钥部分的master.pub密钥的值是我们正在寻找的指纹。

更改 Minion 配置

在你的新的 Salt minion 上,打开 minion 配置文件与sudo特权:

1sudo nano /etc/salt/minion

我们需要指定盐主可以找到的位置,这可以是可解析的DNS域名或IP地址:

1[label /etc/salt/minion]
2master: ip_of_salt_master

接下来,将master_finger选项设置为您几分钟前从 Salt master 复制的指纹值:

1[label /etc/salt/minion]
2master_finger: '7b:97:23:4b:a4:6d:16:31:2d:c9:e3:81:e2:d5:32:92'

保存并关闭文件,当你完成。

现在,重新启动 Salt minion daemon 来实现新的配置更改:

1sudo restart salt-minion

新小伙子应该在提供的地址联系盐主服务,然后将其钥匙发送给大伙子接受。为了安全地验证钥匙,需要在新小伙子服务器上检查钥匙的指纹。

要做到这一点,类型:

1sudo salt-call key.finger --local

你应该看到这样的输出:

1[secondary_label Output]
2local:
3    32:2a:7c:9a:f2:0c:d1:db:84:df:d3:82:00:d5:8f:be

您需要验证主服务器接收的关键指纹是否匹配此值。

接受盐大师上的迷你钥匙

回到您的盐主服务器,我们需要接受密钥。

首先,验证我们有一个未被接受的密钥在等待主机:

1sudo salt-key --list all

您应该在未被接受的密钥部分中看到一个新的密钥,它与您的新小伙子相关联:

1[secondary_label Output]
2Accepted Keys:
3saltmaster
4Denied Keys:
5Unaccepted Keys:
6saltminion
7Rejected Keys:

检查新密钥的指纹. 用您在未被接受的密钥部分中看到的minion ID来修改下面的突出部分:

1sudo salt-key -f saltminion

输出应该像这样的东西:

1[secondary_label Output]
2Unaccepted Keys:
3saltminion: 32:2a:7c:9a:f2:0c:d1:db:84:df:d3:82:00:d5:8f:be

如果这与您在发出salt-call命令时从小符号中获得的值相匹配,您可以通过键入安全地接受密钥:

1sudo salt-key -a saltminion

现在该密钥应该被添加到接受的密钥部分:

1sudo salt-key --list all
1[secondary_label Output]
2Accepted Keys:
3saltmaster
4saltminion
5Denied Keys:
6Unaccepted Keys:
7Rejected Keys:

测试你可以通过键入发送命令到你的新小伙子:

1sudo salt '*' test.ping

您应该从您配置的两种小型魔鬼中获得回复答案:

1[secondary_label Output]
2saltminion:
3    True
4saltmaster:
5    True

结论

您现在应该配置一个 Salt 主服务器来控制您的基础设施,我们还通过了设置新的 minion 服务器的过程,您可以遵循相同的程序,以获得额外的 Salt minions。

Published At
Categories with 技术
comments powered by Disqus