如何在Ubuntu14.04上安装和配置SaltMaster和Minion服务器
介绍
SaltStack 是一个强大、灵活、高性能的配置管理和远程执行系统。 它可用于从集中位置管理您的基础架构,同时最大限度地减少手动维护步骤。 要了解有关 SaltStack 所涉及的一些术语和工具的更多信息,请查看 本指南 。
在本文中,我们将重点介绍如何设置 Salt Master 服务器来管理您的基础架构。 我们还将演示如何在其他计算机上安装 Salt minion 守护程序,以便使用 Salt 管理它们。 我们将使用两台 Ubuntu 14.04 服务器来演示这些步骤。
先决条件
要开始使用,您应该至少有两个 Ubuntu 14.04 服务器实例。 这些应该具有配置有 sudo
权限的非 root 用户。 您可以按照我们的 Ubuntu 14.04 初始服务器设置指南 了解如何创建和配置这些用户。
当您准备好开始时,使用您的 sudo
用户登录到您要用作 Salt Master 的服务器。 我们将首先配置这台机器。
安装主守护进程
Salt master daemon 可以通过多种方式安装在 Ubuntu 14.04 上。 以下是每种方法的优缺点的简要概述:
- Ubuntu SaltStack PPA:使用 Ubuntu 原生包管理工具安装和更新所需软件。 这是最简单的安装方法,但与撰写本文时的情况一样,这些软件包可能已经过时了。
- Salt-Bootstrap:这个引导脚本试图提供一种更通用的方法来安装和配置 Salt。 它可以尝试使用可用的本机软件工具,这意味着它仍可能尝试从上面的 PPA 安装。 它还提供了对 Salt 开发版本的轻松访问。
下面,我们将概述如何使用 Ubuntu PPA 方法进行安装。 我们还将提供有关如何使用 salt-bootstrap
脚本安装 Salt master 的稳定版和开发版的说明。
由您决定哪个选项最适合您的需求。 如果您遇到问题,开发版本中可能有可用的错误修复。 但是,也有可能遇到新发布的错误。
从官方 PPA 安装稳定版
从 Ubuntu PPA 安装是最直接的安装方法。
首先,您需要将 SaltStack PPA 添加到您将用作主服务器的服务器。 您可以通过键入以下内容来执行此操作:
sudo add-apt-repository ppa:saltstack/salt
一旦您确认添加 PPA,它将被添加到您的系统中。 要索引其中可用的新包,您需要更新本地包索引。 之后,您可以安装相关软件:
sudo apt-get update sudo apt-get install salt-master salt-minion salt-ssh salt-cloud salt-doc
在上面的命令中,我们安装了 Salt master 和 minion 守护进程。 这也将允许我们使用 Salt 控制我们的主服务器。 我们还安装了 salt-ssh
和 salt-cloud
,这为我们连接和控制资源的方式提供了更大的灵活性。 我们还包括了文档包。
至此,您已完成 Salt Master 安装。 跳到 初始主配置部分 以启动并运行您的新服务。
使用 Salt-Bootstrap 安装稳定版本
直接使用 PPA 的替代方法是使用 salt-bootstrap
脚本安装稳定版本。 这可以从 SaltStack 网站下载。 您可能会选择使用这种安装稳定系统的方法而不是上述方法的一个原因是它从 pip
包管理器中获取了一些依赖项。 这可能会为您提供一些 Salt 依赖项的更多最新版本。
要开始,请移至您的主目录或您具有写入权限的其他位置。 我们可以使用 curl
来下载引导脚本。 我们将按照 salt-bootstrap GitHub 页面 上的说明进行操作,并将使用他们为清晰起见选择的输出名称:
cd ~ curl -L https://bootstrap.saltstack.com -o install_salt.sh
此时,请查看脚本以确保它没有做任何您不赞成的事情:
less ~/install_salt.sh
salt-bootstrap
脚本由 SaltStack 团队维护,但您应始终在运行外部脚本之前检查它们的内容。
当您对将要采取的操作感到满意时,通过将脚本传递给 sh
来运行脚本。 我们将使用 -P
标志,以便脚本可以根据需要使用 pip
作为依赖源。 如果没有此标志,安装可能会失败。 我们还需要包含 -M
标志,以便安装 Salt Master 守护程序。 所有 Salt 助手实用程序都将自动包含在内。
我们需要的完整命令是:
sudo sh install_salt.sh -P -M
至此,您已完成 Salt Master 安装。 跳到 初始主配置部分 以启动并运行您的新服务。
使用 Salt-Bootstrap 安装开发版本
我们还可以使用 salt-bootstrap
脚本来安装使用 git
的 Salt 的开发版本。 这有助于访问更新的功能,更重要的是,有助于访问可能在软件的 PPA 版本中不可用的更新的错误修复。
所需的脚本与我们上面使用的 salt-bootstrap
脚本相同。 只有我们使用的选项会有所不同。 考虑到这一点,如果您还没有脚本,请将其下载到您的主目录:
cd ~ curl -L https://bootstrap.saltstack.com -o install_salt.sh
同样,查看脚本以确保您可以接受它将执行的操作:
less ~/install_salt.sh
当您满意时,您可以将脚本传递给 sh
执行它。 我们将包含 -P
标志来告诉脚本在必要时获取与 pip
的依赖关系。 包含 -M
标志以指定我们希望安装 Salt Master。 我们将以 git develop
结束命令,告诉脚本我们要使用 SaltStack GitHub repo 来安装最新的开发版本而不是 Ubuntu PPA。
我们需要的完整命令是:
sudo sh install_salt.sh -P -M git develop
至此,您已完成 Salt Master 安装。 接下来,我们将配置主服务器以启动并运行新服务。
初始主配置
接下来,我们需要配置 Salt Master。
创建 Salt 目录结构
首先,我们将创建配置管理目录结构,Salt master 将在其中查找各种文件。 这些默认都在/srv
目录下。 我们需要 /srv/salt
和 /srv/pillar
才能开始。 现在通过键入以下内容创建它们:
sudo mkdir -p /srv/{salt,pillar}
修改 Salt Master 配置
接下来,我们将调整 Salt Master 配置文件。 在文本编辑器中使用 sudo
权限打开文件:
sudo nano /etc/salt/master
我们要做的第一件事是设置 file_roots
字典。 这基本上指定了 Salt Master 将查找配置管理指令的位置。 base
指定默认环境。 我们之前创建的两个目录将用于此目的。 /srv/salt
将用于管理员创建的指令,而 /srv/formulas
将用于从外部源下载的预打包配置:
/etc/salt/master
file_roots: base: - /srv/salt - /srv/formulas
笔记
准确复制给出的格式很重要。 Salt 使用 YAML 样式的配置文件。 这些需要严格注意间距和缩进,以便守护程序正确解释值。
接下来,我们将为 Saltpillar 配置设置根目录。 这看起来与上面的配置非常相似,并且使用了我们创建的第三个目录:
/etc/salt/master
pillar_roots: base: - /srv/pillar
这就是我们此时需要为master配置的所有内容。 完成后保存并关闭文件。
修改 Salt Minion 配置
我们还在这台机器上安装了 Salt minion 守护程序,以便我们可以使其与我们的其他基础设施策略保持一致。 接下来使用 sudo
权限打开 Salt minion 配置:
sudo nano /etc/salt/minion
我们需要做的唯一改变是指定这个minion应该连接的master。 在这种情况下,minion 应该连接到同一台机器上运行的 master 进程。 将 master
键设置为等于本地环回地址 127.0.0.1
以使 minion 正确连接:
/etc/salt/minion
master: 127.0.0.1
完成后保存并关闭文件。
重新启动进程
现在,我们需要重新启动 Salt master 和 minion 守护进程才能使用我们的新配置:
sudo restart salt-master sudo restart salt-minion
考虑到我们概述的配置更改,两个守护程序都将重新启动。
接受奴才钥匙
重新启动后,Salt minion 守护程序自动使用其凭据联系 Salt Master。 作为管理员,您只需验证并接受 minion 的密钥以允许通信。
首先列出 Salt Master 知道的所有键:
sudo salt-key --list all
你应该看到这样的东西。 下面的 saltmaster
应该与您系统的 Salt minion ID 匹配。 这通常是您的服务器的主机名:
OutputAccepted Keys: Denied Keys: Unaccepted Keys: saltmaster Rejected Keys:
如您所见,我们的 Salt minion 已将其密钥发送给 master,但尚未被接受。 为了安全起见,在接受密钥之前,我们将运行两个命令。
我们需要确保它的输出(它告诉我们 Salt minion 生成的密钥的指纹):
sudo salt-call key.finger --local
Outputlocal: 24:c8:77:1d:ed:10:d7:b0:3e:bc:bc:ed:41:e1:5a:d1
匹配此处找到的指纹(要求 Salt Master 接受的密钥的指纹)。 在这里替换minion ID:
sudo salt-key -f saltmaster
OutputUnaccepted Keys: saltmaster: 24:c8:77:1d:ed:10:d7:b0:3e:bc:bc:ed:41:e1:5a:d1
验证这些值是否相同后,您可以通过键入以下内容来接受密钥:
sudo salt-key -a saltmaster
接受密钥后,您可以看到密钥已移至“接受的密钥”部分:
sudo salt-key --list all
OutputAccepted Keys: saltmaster Denied Keys: Unaccepted Keys: Rejected Keys:
现在,您可以通过键入以下内容来测试 Salt master 和 minion 进程是否正确通信:
sudo salt '*' test.ping
您应该会收到一条消息,表明运行状况检查成功:
Outputsaltmaster: True
您的 Salt 主服务器现已配置完毕。 我们可以继续演示如何设置额外的 Salt minion 服务器。
安装一个单独的 Minion
现在我们的 Salt 主服务器已经启动并顺利运行,我们可以演示如何将新服务器置于 Salt 作为 Minion 的控制之下。
同样,我们有多种安装必要软件的方法,但是您应该匹配用于主服务器的方法。 这将确保您在 Salt master 和 minion 之间没有版本不匹配。 比主服务器更新的 Salt Minion 可能会表现出不可预测的行为。
准备好后,使用您的 sudo
用户登录到您的第二台服务器。
从官方 PPA 安装 Stable Master
如果您从 SaltStack PPA 安装了 Salt Master 服务器,您可以在您的 Ubuntu minion 服务器上添加相同的 PPA:
sudo add-apt-repository ppa:saltstack/salt
这一次,我们只需要安装 salt-minion
可执行文件。 添加 PPA 后更新您的本地包索引并通过键入以下命令安装软件:
sudo apt-get update sudo apt-get install salt-minion
您的 Salt minion 现在应该已安装。 跳到 配置你的仆从 部分。
使用 Salt-Bootstrap 安装稳定版本
如果您使用 salt-bootstrap
安装了稳定版,您可以将相同的脚本下载到您的 minion 机器:
cd ~ curl -L https://bootstrap.saltstack.com -o install_salt.sh
我们将以几乎与在 Salt master 上相同的方式调用脚本。 唯一的区别是我们省略了 -M
标志,因为我们不需要安装主工具和守护进程:
sudo sh install_salt.sh -P
您的 Salt minion 现在应该已安装。 跳到 配置你的仆从 部分。
使用 Salt-Bootstrap 安装开发版本
如果您使用 salt-bootstrap
在 Salt Master 上安装了当前开发版本,则可以使用相同的脚本安装伴随的 minion 进程。 通过键入以下内容将其下载到您的奴才:
cd ~ curl -L https://bootstrap.saltstack.com -o install_salt.sh
我们需要安装 minion 的命令与我们在 master 上使用的命令几乎相同。 唯一的区别是我们省略了 -M
标志,以表明我们不需要 Salt master 工具和守护进程:
sudo sh install_salt.sh -P git develop
完成后,继续配置您的 minion 实例。
配置 Minion
现在我们已经安装了 minion,我们可以继续配置它以与我们的 Salt master 通信。
获取 Salt Master 公钥指纹
在开始之前,我们应该获取 Salt Master 的密钥指纹。 我们可以将其添加到我们的 minion 配置中以提高安全性。
在您的 Salt 主服务器上,键入:
sudo salt-key -F master
输出应如下所示:
OutputLocal Keys: master.pem: 12:db:25:3d:7f:00:a3:ed:20:55:94:ca:18:f8:67:97 master.pub: 7b:97:23:4b:a4:6d:16:31:2d:c9:e3:81:e2:d5:32:92 Accepted Keys: saltmaster: 24:c8:77:1d:ed:10:d7:b0:3e:bc:bc:ed:41:e1:5a:d1
位于“Local Keys”部分下的 master.pub
键的值是我们正在寻找的指纹。 复制此值以在我们的 Minion 配置中使用。
修改 Minion 配置
回到你的新 Salt minion,使用 sudo
权限打开 minion 配置文件:
sudo nano /etc/salt/minion
我们需要指定可以找到 Salt Master 的位置。 这可以是可解析的 DNS 域名或 IP 地址:
/etc/salt/minion
master: ip_of_salt_master
接下来,将 master_finger
选项设置为您刚才从 Salt Master 复制的指纹值:
/etc/salt/minion
master_finger: '7b:97:23:4b:a4:6d:16:31:2d:c9:e3:81:e2:d5:32:92'
完成后保存并关闭文件。
现在,重新启动 Salt minion 守护程序以实现新的配置更改:
sudo restart salt-minion
新的 minion 应该通过提供的地址联系 Salt Master 服务。 然后它将发送它的密钥供主人接受。 为了安全地验证密钥,需要在新的 minion 服务器上检查密钥指纹。
为此,请键入:
sudo salt-call key.finger --local
您应该看到如下所示的输出:
Outputlocal: 32:2a:7c:9a:f2:0c:d1:db:84:df:d3:82:00:d5:8f:be
您将需要验证主服务器收到的密钥指纹是否与此值匹配。
接受 Salt Master 上的 Minion Key
回到您的 Salt Master 服务器上,我们需要接受密钥。
首先,验证我们是否有一个未接受的密钥在等待主节点:
sudo salt-key --list all
你应该在“Unaccepted Keys”部分看到一个与你的新 Minion 相关联的新密钥:
OutputAccepted Keys: saltmaster Denied Keys: Unaccepted Keys: saltminion Rejected Keys:
检查新密钥的指纹。 使用您在“Unaccepted Keys”部分中看到的 minion ID 修改下面突出显示的部分:
sudo salt-key -f saltminion
输出应如下所示:
OutputUnaccepted Keys: saltminion: 32:2a:7c:9a:f2:0c:d1:db:84:df:d3:82:00:d5:8f:be
如果这与您在发出 salt-call
命令时从 minion 收到的值匹配,您可以通过键入以下内容安全地接受密钥:
sudo salt-key -a saltminion
现在应该将密钥添加到“接受的密钥”部分:
sudo salt-key --list all
OutputAccepted Keys: saltmaster saltminion Denied Keys: Unaccepted Keys: Rejected Keys:
通过键入以下命令测试您是否可以向新的 minion 发送命令:
sudo salt '*' test.ping
您应该从您配置的两个仆从守护程序收到回复:
Outputsaltminion: True saltmaster: True
结论
您现在应该配置了一个 Salt 主服务器来控制您的基础架构。 我们还完成了设置新 Minion 服务器的过程。 您可以对其他 Salt minions 遵循相同的过程。 这些是为 Salt 管理设置新基础架构所需的基本技能。