介绍
SaltStack是一个强大,灵活,高性能的配置管理和远程执行系统。 它可以用于从集中位置管理您的基础设施,同时最小化手动维护步骤。 要多了解一些涉及SaltStack的术语和工具,检查出该指南 。
在本文中,我们将重点关注设置一个Salt主服务器来管理您的基础架构。 我们还将演示如何在其他计算机上安装Salt minion守护程序,以便使用Salt管理它们。 我们将使用两个Ubuntu 14.04服务器来演示这些步骤。
先决条件
要开始,您应该至少有两个Ubuntu 14.04服务器实例。 这些应该有配置的非root用户sudo
权限。 你可以学习如何创建并按照我们的配置这些用户的Ubuntu 14.04服务器初始设置指南 。
当你准备好开始,登录到要作为Salt Master与你使用的服务器sudo
用户。 我们将首先配置此机器。
安装主守护程序
Salt master守护程序可以在Ubuntu 14.04上以多种方式安装。 以下是每种方法的优点和缺点的简要说明:
- Ubuntu的SaltStack PPA:使用Ubuntu的原生软件包管理工具安装和更新所需的软件。 这是最简单的安装方法,但是,在撰写本文时,这些包可能会显着过时。
- Salt引导 :引导这个脚本试图提供安装和配置Salt的更普遍的方法。 它可以尝试使用可用的本机软件工具,这意味着它仍然可以尝试从上面的PPA安装。 它还提供了容易访问Salt的开发版本。
下面,我们将概述如何使用Ubuntu PPA方法安装。 我们也将提供有关如何使用说明salt-bootstrap
脚本同时安装稳定和Salt大师的开发版本。
由您决定哪个选项最适合您的需求。 如果你遇到问题,可能在开发版本中有可用的错误修复。 但是,也有机会进入新发布的bug。
从官方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 daemons。 这将允许我们用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主守护进程。 所有的Salt helper实用程序将被自动包括。
我们需要的完整命令是:
sudo sh install_salt.sh -P -M
在这一点上,您已完成Salt master安装。 跳到下到最初的主配置部分 ,让您的新服务启动和运行。
使用Salt-Bootstrap安装开发版本
我们还可以使用salt-bootstrap
脚本安装使用Salt的开发版本git
。 这有助于访问较新的功能,更重要的是,可以访问PPA软件版本中可能没有的最新错误修复。
所需的脚本是一样的salt-bootstrap
我们上面使用的脚本。 只有我们使用的选项会有所不同。 考虑到这一点,如果您没有脚本,请将其下载到您的主目录:
cd ~
curl -L https://bootstrap.saltstack.com -o install_salt.sh
再次,看看脚本,以确保您可以执行它将执行的操作:
less ~/install_salt.sh
当您满意,您可以通过脚本sh
执行它。 我们将包括-P
标志告诉脚本获得依赖与pip
,如果必要的。 在-M
标志被列入指定我们要安装的Salt主人。 我们将结束与命令git develop
告诉我们要使用的脚本SaltStack GitHub库安装最新开发版本,而不是Ubuntu的PPA。
我们需要的完整命令是:
sudo sh install_salt.sh -P -M git develop
在这一点上,您已完成Salt master安装。 接下来,我们将配置主服务器,以使新服务启动并运行。
初始主配置
接下来,我们需要配置Salt主机。
创建Salt目录结构
首先,我们将创建配置管理目录结构,Salt主机将在其中查找各种文件。 这些都是下/srv
默认目录。 我们需要/srv/salt
和/srv/pillar
上手。 现在通过键入以下内容创建它们:
sudo mkdir -p /srv/{salt,pillar}
修改Salt主配置
接下来,我们将调整Salt主配置文件。 打开该文件sudo
在文本编辑器的权限:
sudo nano /etc/salt/master
我们会做的第一件事就是设置file_roots
字典。 这基本上指定了Salt master将寻找配置管理指令的位置。 该base
指定默认的环境。 我们之前创建的两个目录将用于此目的。 的/srv/salt
将用于管理员创建指令和/srv/formulas
将预留用于从外部源下载的预先包装的配置进行设置:
file_roots:
base:
- /srv/salt
- /srv/formulas
接下来,我们将为我们的Salt柱配置设置根目录。 这看起来非常类似于上面的配置,并使用我们创建的第三个目录:
pillar_roots:
base:
- /srv/pillar
这就是我们需要为主机配置的时间。 保存并在完成后关闭文件。
修改Salt Minion配置
我们还在这台机器上安装了Salt minion守护进程,以便我们能够保持其与我们的基础架构策略的其余部分一致。 与打开Salt minion从配置sudo
权限下一篇:
sudo nano /etc/salt/minion
我们需要做的唯一的改变是指定这个minion应该连接到的主机。 在这种情况下,minion应连接到在同一台机器上运行的主进程。 设置master
键等于本地环回地址127.0.0.1
,以便走狗正确连接:
master: 127.0.0.1
保存并在完成后关闭文件。
重新启动进程
现在,我们需要重新启动Salt master和minion守护进程,以便使用我们的新配置:
sudo restart salt-master
sudo restart salt-minion
这两个守护程序将重新启动,考虑到我们概述的配置更改。
接受小键
重新启动后,Salt minion守护程序自动使用其凭据联系Salt主机。 作为管理员,您只需要验证并接受minion的密钥以允许通信。
首先列出Salt master了解的所有键:
sudo salt-key --list all
你应该看到这样的东西。 该saltmaster
下面应该与你的系统的Salt minion从ID。 这通常是您的服务器的主机名:
OutputAccepted Keys:
Denied Keys:
Unaccepted Keys:
saltmaster
Rejected Keys:
正如你所看到的,我们的Salt minion把它的钥匙发送给了主人,但它还没有被接受。 出于安全考虑,在接受密钥之前,我们将运行两个命令。
我们需要确保这个输出(告诉我们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主人被要求接受的键的指纹)。 在此处替换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主机和从属进程是否正确通信:
sudo salt '*' test.ping
您应该会收到一条消息,指示健康状况检查已成功:
Outputsaltmaster:
True
您的Salt主服务器现已配置。 我们可以继续演示如何设置一个额外的Salt minion服务器。
安装单独的Minion
现在我们已经将Salt主服务器启动并运行顺利,我们可以展示如何将一个新的服务器作为一个Minion来控制。
同样,我们在安装必要的软件的多种方法,但你应该与用于主服务器的方法 。 这将确保您在Salt master和minion之间没有版本不匹配。 比其主服务器更新的SaltMinion可能表现出不可预测的行为。
当你准备好,请登录到你与你的第二个服务器sudo
用户。
从官方PPA安装稳定的主
如果您从SaltStack PPA安装了Salt主服务器,您可以在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现在应该安装。 跳到上一节配置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现在应该安装。 跳到上一节配置Minion 。
使用Salt-Bootstrap安装开发版本
如果您使用安装在Salt Master目前的开发版本salt-bootstrap
,可以使用相同的脚本安装同伴仆从过程。 键入以下内容将其下载到您的下巴:
cd ~
curl -L https://bootstrap.saltstack.com -o install_salt.sh
我们需要安装minion的命令几乎与我们在master上使用的命令相同。 唯一的区别是,我们离开关-M
标志,以表明我们不需要Salt主工具和守护进程:
sudo sh install_salt.sh -P git develop
完成后,继续前进以配置您的minion实例。
配置Minion
现在我们已经安装了minion,我们可以继续配置它与我们的Salt master通信。
获得Salt主公钥指纹
在我们开始之前,我们应该抓住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
该值master.pub
键,位于“本地密钥”部分就是我们正在寻找的指纹。 复制此值以在我们的Minion配置中使用。
修改Minion配置
回到你的新SaltMinion,打开与仆从配置文件sudo
权限:
sudo nano /etc/salt/minion
我们需要指定Salt主目录的位置。 这可以是可解析的DNS域名或IP地址:
master: ip_of_salt_master
接下来,设置master_finger
选项,刚才你从Salt主复制的指纹值:
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主服务在提供的地址。 然后它将发送它的密钥为主人接受。 为了安全地验证密钥,需要检查新的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主的Minion钥匙
回到Salt主服务器,我们需要接受密钥。
首先,验证我们有一个不接受的密钥等待主:
sudo salt-key --list all
您应该在与新的随从关联的“未接受的密钥”部分中看到一个新密钥:
OutputAccepted Keys:
saltmaster
Denied Keys:
Unaccepted Keys:
saltminion
Rejected Keys:
检查新密钥的指纹。 使用您在“未接受的键”部分中看到的随员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
命令,你可以放心地接受通过输入键:
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 minion。 这些是您为Salt管理设置新基础架构所需的基本技能。