macOS(Maverick)开发人员Step by Step安装SaltStack的指导

本文档提供了安装Salt集群的分步指南,该集群由一个master服务器和一个在macOS上托管的本地VM上运行的minion组成。

注意:本指南面向希望在虚拟机中运行Salt的开发人员。 官方(Linux)教程可以在这里找到。

您也可以浏览Github上一份相同的技术资料:THE MACOS (MAVERICK) DEVELOPER STEP BY STEP GUIDE TO SALT INSTALLATION

THE 5 CENT SALT INTRO

既然你在阅读这个资料,你可能已经听说过Salt,所以你已经知道Salt可以让你轻松地在成群的服务器上配置和运行命令。以下是Salt集群的简要概述:

  • Salt通过让“master”服务器向一个或多个“minion”服务器发送命令来工作。Master服务器是“命令中心”。它将成为存储配置文件的地方,也就是说:“哪个服务器是数据库,哪个是Web服务器,以及它们应该安装哪些库和软件”。Minions接收Master的命令。Minions是实际为您的企业执行工作任务的服务器。
  • Salt有两种类型的配置文件:
    1. “salt communication channels”或“meta”或“config”配置文件(非官方名称):一个用于master(通常是/etc/salt/master,在master服务器上),一个用于minions(默认)是/etc/salt/minion或/etc/salt/minion.conf,在minion服务器上)。这些文件用于确定诸如Salt Master IP、端口、Salt文件夹位置等内容。如果这些文件配置不正确,您的minions可能无法接收来自master主机的管理任务,或者master主机将不知道哪个软件是应该给予minion安装。
    2. “业务”或“服务”配置文件(再一次,这不是正式名称):这些是以“.sls”扩展名结尾的配置文件,用于描述哪个软件应在哪个服务器上运行,以及特定的配置属性对于正在安装的软件。默认情况下,应在/srv/salt文件夹中创建这些文件,但可以使用…/etc/salt/master配置文件更改它们的位置!

注意:本教程中还包含了第三个重要的配置文件,不要与前两个配置文件混淆:这里指的是虚拟机配置的配置文件。这本身并不特别与Salt有关,但它也包含一些Salt配置。有关详细信息,请参阅步骤3.另请注意,所有配置文件都是YAML文件。所以缩进很重要。

注意:Salt也可以使用“masterless”配置,其中minion是自治的(在这种情况下salt可以看作是本地配置工具),或者是“multi-master”配置。有关详细信息,请参阅相关文档。

在深入之前,再了解下Salt的架构

SALT MASTER

“Salt master”服务器将直接运行在Mac OS机器上。命令将从terminal终端应用运行,因此需要在Mac上安装Salt。这对于使用配置文件进行操作会更方便。

SALT MINION

我们将只有一个“Salt Minion”服务器。它将使用VirtualBox在Mac上运行的虚拟机上运行。它将运行Ubuntu发行版。

STEP 1 - CONFIGURING THE SALT MASTER ON YOUR MAC

Official Documentation

因为Salt有许多不是在macOS中构建的依赖项,所以我们将使用Homebrew来安装Salt。 Homebrew是Mac的软件包管理器。 有些人花了很多时间手工安装lib来更好地理解依赖关系,然后意识到一个包管理器在配置一台全新的机器并且必须重新做一遍之后是多么有用。 它还可以让您轻松卸载。

注意:Brew是一个Ruby程序(默认情况下,需要您的Mac安装了Ruby)。 Brew下载,编译和链接软件。 链接阶段是在您的计算机上部署编译软件时。 它可能与手动安装的软件冲突,尤其是在/usr/local目录中。 没关系,删除手动安装的版本,然后输入brew link 'packageName’刷新链接。 Brew有一个brew Doctor命令可以帮助您排除故障。 这是一个伟大的命令,经常使用它。 Brew需要xcode命令行工具。 当你第一次运行brew时它会要求你安装它们,如果它们还没有在你的系统上。 Brew在/usr/local/bin中安装软件(系统bins则位于/usr/bin中)。 要使用这些bins,您需要使用 P A T H 告 诉 系 统 在 那 里 搜 索 。 B r e w 会 告 诉 您 是 否 需 要 修 复 PATH告诉系统在那里搜索。 Brew会告诉您是否需要修复 PATHBrewPATH。

小提示:在"open" macOS对话框中使用键盘快捷键cmd + shift + period来显示隐藏文件和文件夹,例如.profile。

INSTALL HOMEBREW

安装 Homebrew 的方法请参见: http://brew.sh/

或者是,直接执行:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

现在在终端中键入以下命令(您可能希望在每个命令后键入brew doctor以确保一切正常):

brew install python
brew install swig
brew install zmq

注意:zmq是ZeroMQ。 它是一个用于服务器到服务器之间网络通信的出色工具库,是Salt运行效率的核心。

INSTALL SALT

您现在应该已经准备好启动此命令:

pip install salt

注意:应该不需要使用sudo pip install salt。 Brew为您的用户安装了Python,因此您应该拥有所有访问权限。 如果你想检查,键入which python以确保它是/usr/local/bin/python,以及which pip应该是/usr/local/bin/pip

现在在终端中键入python,然后执行import salt。 应该没有报错。 现在使用exit()退出Python终端。

CREATE THE MASTER CONFIGURATION

如果未创建默认的/etc/salt/master配置文件,请从此处复制粘贴它:
http://docs.saltstack.com/ref/configuration/examples.html#configuration-examples-master

注意:/etc/salt/master 是一个文件,而不是一个目录。

Salt Master的配置更改。 Salt master需要调整一些配置参数才能在macOS上运行:

sudo launchctl limit maxfiles 4096 8192

/etc/salt/master 文件中, 变更 max_open_files 参数值为 8192 (或者是如果不存在该参数时,直接添加上一行: max_open_files: 8192 )。

现在应该可以启动 Salt master服务了:

sudo salt-master --log-level=all

运行上面命令时,应该不会有报错信息。

注意:这个命令应该是一个守护进程,但是为了调试它,我们会让它在终端上运行来监视各种活动。

现在已经设置了Master服务器,让我们在VM上配置一个minion。

STEP 2 - CONFIGURING THE MINION VM

Salt minion将部署在虚拟机上运行。 有许多软件选项可以让你在mac上运行虚拟机,但在本教程中我们将使用VirtualBox。 除了virtualBox之外,我们还将使用Vagrant,它可以帮助创建基本VM配置。

Vagrant允许您构建可立即使用的VM映像,从操作系统映像开始并使用"provisioners"进行自定义。 在我们的例子中,我们将使用它:

  • 下载 Ubuntu image
  • 安装 salt 到 Ubuntu image (Salt 将作为 “provisioner” 对 VM进行一些自定义的配置).
  • 启动 VM
  • SSH 登录 VM
  • 测试结束后停止 VM

INSTALL VIRTUALBOX

从这里获取安装包: https://www.virtualBox.org/wiki/Downloads (click on VirtualBox for macOS hosts => x86/amd64)

INSTALL VAGRANT

从这里获取安装包: http://downloads.vagrantup.com/ ,选择最新版本 (1.3.5 at time of writing), 下载 .dmg 文件。双击以安装它。 确保在终端中运行时找到vagrant命令。 输入vagrant。 它应该显示一个命令列表。

CREATE THE MINION VM FOLDER

创建一个文件夹,您可以在其中存储您的minion的VM。 在本教程中,它将是一个位于$home目录中的minion文件夹。

cd $home
mkdir minion

INITIALIZE VAGRANT

在 minion 文件夹中,执行以下命令:

vagrant init

此命令将创建默认的Vagrantfile配置文件。 此配置文件将用于在步骤3中将配置参数传递给Salt provisioner 。

IMPORT PRECISE64 UBUNTU BOX

vagrant box add precise64 http://files.vagrantup.com/precise64.box

注意:该box是在全局Vagrant级别添加的。 您只需要执行一次,因为每个VM将使用此相同的文件。

MODIFY THE VAGRANTFILE

修改 ./minion/Vagrantfile 文件以使用 precise64 box。 将 config.vm.box 这一行变更为:

config.vm.box = "precise64"

取消下面行的注释以创建一个 host-only IP 地址的VM。 这将是你的minion节点的ip地址 (如果IP地址已占用,可以更换为其它空闲地址):

config.vm.network :private_network, ip: "192.168.33.10"

此时你应该有一个可以运行的虚拟机,尽管它不会有多少功能。 我们来检查一下。

CHECKING THE VM

进入到 $home/minion 目录并执行:

vagrant up

会打印一行日志信息表示正在引导VM。 一旦完成,你将回到终端:

ping 192.168.33.10

此时可以ping通VM的IP地址了。

现在再次使用Vagrant ssh登录VM:

vagrant ssh

你将看到命令行提示符的风格变成类似 vagrant@precise64:~$ ,意味着此时你已经在 VM 中了。从这里,执行下面的命令:

ping 10.0.2.2

注意:该ip是您的VM宿主机(macOS主机)的IP。 该数字是VirtualBox默认值,在Vagrant ssh命令后显示在日志中。 我们将使用该IP告诉minion 关于Salt Master在哪里。 完成后,键入exit结束ssh会话。

现在是时候将VM连接到salt master了。

STEP 3 - CONNECTING MASTER AND MINION

CREATING THE MINION CONFIGURATION FILE

创建/etc/salt/minion文件。 在该文件中,输入以下行,给出此minion的ID以及master的IP:

master: 10.0.2.2
id: 'minion1'
file_client: remote

Minions使用密钥与master进行身份验证。 如果您不提供密钥,则会自动生成密钥,并且可以在以后接受该密钥。 然而,这需要在每次删除或创建minions时接受minions密钥(这可能是经常的)。 更好的方法是提前创建这些密钥,将它们提供给minions,并做好授权。

PRESEED MINION KEYS

从Mac上的minion文件夹运行:

sudo salt-key --gen-keys=minion1

这应该创建两个文件:minion1.pem和minion1.pub。 由于这些文件是使用sudo创建的,但将由vagrant使用,因此您需要更改所有权:

sudo chown youruser:yourgroup minion1.pem
sudo chown youruser:yourgroup minion1.pub

接下来,把 .pub 文件复制到已接受minions的路径下:

sudo cp minion1.pub /etc/salt/pki/master/minions/minion1

MODIFY VAGRANTFILE TO USE SALT PROVISIONER

现在让我们修改用于配置Salt VM的Vagrantfile。 在Vagrantfile中添加以下部分(注意:它应与其他属性处于相同的缩进级别):

# salt-vagrant config
config.vm.provision :salt do |salt|
    salt.run_highstate = true
    salt.minion_config = "/etc/salt/minion"
    salt.minion_key = "./minion1.pem"
    salt.minion_pub = "./minion1.pub"
end

现在删除先前的 vm ,然后在 /minion 文件夹中重新创建它:

vagrant destroy
vagrant up

如果一切正常,你会看到以下信息:

"Bootstrapping Salt... (this may take a while)
Salt successfully configured and installed!"

CHECKING MASTER-MINION COMMUNICATION

要确保master和minion彼此正常通信,请输入以下内容:

sudo salt '*' test.version

你应该看到你的minion回复的Salt版本信息。 现在是时候做一些配置了。

STEP 4 - CONFIGURE SERVICES TO INSTALL ON THE MINION

在这一步中,我们将使用Salt master来指示我们的minion安装Nginx。

CHECKING THE SYSTEM’S ORIGINAL STATE

首先,确保我们的minion上没有安装HTTP服务器。 打开指向http://192.168.33.10/的浏览器时,您应该收到错误消息,指出无法访问该站点。

INITIALIZE THE TOP.SLS FILE

系统配置是在/srv/salt/top.sls(和子文件/文件夹)中完成,然后通过运行state.apply函数来应用,让Salt master命令其下属更新其指令并运行相关命令。

首先在Salt master(macOS机器)上创建一个空文件:

touch /srv/salt/top.sls

当文件为空时,或者如果没有找到我们的minion的配置,则会报告错误:

sudo salt 'minion1' state.apply

这将返回一个状态错误的信息: No Top file or external nodes data matches found.

CREATE THE NGINX CONFIGURATION

现在终于可以进入我们服务器配置的真正时间了。 对于本教程,我们的minion将被视为需要安装Nginx的Web服务器。

将以下行插入/srv/salt/top.sls(当前应为空)。

base:
  'minion1':
    - bin.nginx

现在,创建 /srv/salt/bin/nginx.sls 文件,包含以下内容:

nginx:
  pkg.installed:
    - name: nginx
  service.running:
    - enable: True
    - reload: True

CHECK MINION STATE

最后,执行 state.apply 功能函数:

sudo salt 'minion1' state.apply

您应该看到一个日志,显示已安装Nginx软件包并配置了服务。 要证明这一点,请打开浏览器并导航到http://192.168.33.10/,您应该看到标准的Nginx欢迎页面。

恭喜!

WHERE TO GO FROM HERE

Salt中的配置管理的完整描述(sls文件和其他内容)可在此处获得:
http://docs.saltstack.com/en/latest/index.html#configuration-management

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值