在Ubuntu12.04上使用SaltCloud自动配置DigitalOcean云服务器

来自菜鸟教程
跳转至:导航、​搜索

状态: 已弃用

本文介绍了不再受支持的 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 版本编写的指南。 您可以使用页面顶部的搜索功能来查找更新的版本。


介绍


本教程基于 如何在 Ubuntu 12.04 上安装 Salt | DigitalOcean 旨在为读者提供可操作的 Salt Cloud 主服务器的简化基本设置。 然后,DigitalOcean 用户可以使用此应用来自动化创建 1、2 或一组云服务器的过程。

全面基础设施管理


Salt Stack 是一个开源的云部署、配置管理、远程执行和监控包。 您可能没有听说过 Salt,但您可能熟悉 PuppetChef。 Salt是一个类似的工具,但它在资源和需求方面都比较轻量级,越来越多的用户认为它好用得多。 Salt、Puppet 和 Chef 等工具允许您同时在多台机器上发出命令,以及安装和配置软件。 Salt有两个主要方面:(i)配置管理和(ii)远程执行。 云部署留给 Salt Cloud。

Salt Cloud 是一种公有云供应工具,旨在自动部署公有云服务器。 它将 Salt 与 DigitalOcean 的应用程序编程接口 (API) 以一种干净的方式——并且(i)创造; (ii) 规定和 (iii) 管理液滴(即 云或虚拟专用服务器)通过虚拟机 mapsprofiles。 DigitalOcean 液滴可以单独或成组创建,并且可以进行配置和完全管理,而无需登录。 从部署单个虚拟机到映射和配置整个云,Salt Cloud 可根据您的需要进行扩展。

先决条件


一、参考【X15X】如何在Ubuntu 12.04上安装Salt | DigitalOcean 并在您的 VPS 上创建一个 Salt master/minion。

安全加固

任何可从公共 Internet 访问的服务器都应进行安全加固,您的 Salt Master 也不例外:

  • 将您的 SSH 端口从默认端口 22 更改为低于 1024 的随机端口 ,如 使用 Ubuntu 12.04 的初始服务器设置的 第五步 中所述;

Salt master 使用 AES 加密的 ZeroMQ 连接与 minions 进行通信。 这些通信是通过 TCP 端口 4505 和 4506 完成的,需要在主站 上仅 可以访问这些端口。

  • 配置一个防火墙并确保打开您的自定义 SSH 端口TCP 端口 4505 和 4506 ;

Ubuntu 的默认防火墙配置工具是 ufw。 要打开 Salt 端口,只需执行:

     sudo ufw allow [custom SSH port below 1024]/tcp
        sudo ufw allow salt
        sudo ufw enable
        sudo ufw status verbose

任何一个禁用密码登录或部署 Fail2ban & 拒绝主机 .

为 DigitalOcean 控制面板创建 SSH 密钥对

Salt Cloud 使用公钥加密来保护 Salt Master 和 DigitalOcean 之间的通信。 因此,在您的主服务器上创建一个目录来存储您的 SSH 密钥:

sudo mkdir /keys

接下来,执行:

sudo ssh-keygen -t rsa

系统将响应 输入保存密钥的文件 (/root/.ssh/id_rsa):。 复制和粘贴:

/keys/digital-ocean-salt-cloud

按键盘上的“Enter”。 系统会显示Enter passphrase (empty for no passphrase):,要求您输入可选的密码。 不要输入密码; 相反,点击“Enter”键两次。

您的新公共 (SSH) 密钥现在位于“keys/digital-ocean-salt-cloud.pub”中。 最后,执行:

cat /keys/digital-ocean-salt-cloud.pub

将公钥复制并粘贴到您的 DigitalOcean 控制面板中,如 How To Use SSH Keys with DigitalOcean Droplets 的第三步中所述(将控制面板中的公钥名称保存为 digital-海洋盐云.pub)。

主机名和完全限定域名 (FQDN)


验证您的 Salt Master 的主机名和 FQDN 是否已正确设置。 参见 在 Ubuntu 12.04 上设置主机名和完全限定域名 (FQDN)。

获取安装工具


Salt Stack 是用 Python 编程语言构建的; 所以,我们需要 pip(一个包管理系统,用于安装和管理用 Python 编写的软件包)。 此外,尽管可以通过 Python 的存储库获得,但我们将从 Salt Stack 的 GitHub 存储库 下载 Salt Cloud 包。

要在您的系统上安装 pipgit,请执行:

sudo apt-get -y install python-pip git

安装 Salt Cloud 依赖项


首先,执行:

sudo apt-get -y install python-m2crypto

然后,执行:

sudo pip install pyzmq PyYAML pycrypto msgpack-python jinja2 psutil salt

接下来,执行:

sudo pip install apache-libcloud

安装盐云


最后,执行:

sudo pip install git+https://github.com/saltstack/salt-cloud.git#egg=salt_cloud

通过执行以下命令验证 Salt Cloud 是否已成功安装:

salt-cloud --version

配置盐云


Salt Cloud 运行在类似于主 Salt 项目的模块系统上; 并且,默认情况下,它的模板文件使用 PyYAML 语法——但也可以使用许多其他模板语言。 创建配置文件时,请务必遵循 YAML 的正确格式化技术,其中涉及两个空格而不是制表符。

在对 YAML 文件的语法问题进行故障排除时,可以使用 在线 YAML 解析器

一世。 核心配置


Salt Cloud的核心配置在云配置文件中处理。 该文件由影响系统中所有云提供商的全局配置组成。 此外,云文件是创建的 minions 派生其配置的地方。

通过执行创建云配置文件(显然,您可以使用任何您想要的文本编辑器;但本指南假定您已经安装了 vim 文本编辑器):

sudo vim /etc/salt/cloud

在键盘上,点击i键; 使用箭头键导航文本区域; 并复制和粘贴或创建您的云文件,使其类似于以下示例(将master.yourdomain.tld替换为您的 Salt Master 的 FQDN):

provider: do
# Set the location of the Salt master
minion:
  master: master.yourdomain.tld

要保存并退出,请点击键盘上的 Esc 键,然后按以下键:1) : 2) w 3) q 4) Enter。

对于进一步的定制,可以在核心配置文件中传递的附加 杂项选项 可用。

云提供商模块


接下来,创建两个新目录:

sudo mkdir /etc/salt/{cloud.profiles.d,cloud.providers.d}

这些新目录将保存 DigitalOcean 特定的 YAML 配置文件。

二、 DigitalOcean 云提供商配置


DigitalOcean cloud provider 配置用于控制对您的 DigitalOcean 帐户的访问。 通过执行以下命令创建 DigitalOcean 云提供商配置 文件:

sudo vim /etc/salt/cloud.providers.d/digital_ocean.conf

点击i键; 使用键盘上的箭头键浏览文本区域; 并复制和粘贴或创建您的 digital_ocean.conf 文件,使其类似于以下示例:

do:
  provider: digital_ocean
  # Digital Ocean account keys
  client_key: YourClientIDCopiedFromControlPanel
  api_key: YourAPIKeyCopiedFromControlPanel
  ssh_key_name: digital-ocean-salt-cloud.pub
  # Directory & file name on your Salt master
  ssh_key_file: /keys/digital-ocean-salt-cloud

要保存并退出,请点击键盘上的 Esc 键,然后按以下键:1) : 2) w 3) q 4) Enter。

数字海洋 API


将 Salt Cloud 与 DigitalOcean 一起使用需要 client_keyapi_key。 这些可以在“API 访问”选项卡下的 DigitalOcean 控制面板 中找到。

现在,按照 如何使用 DigitalOcean API 中概述的步骤为您的帐户创建一个 API 密钥。 您需要将 DigitalOcean Client IDAPI Key 复制并粘贴到 cloud provider 配置文件中,如上所述。

与 API 交互


/etc/salt/cloud.providers.d/digital_ocean.conf 中配置 DigitalOcean 提供程序后,您可以访问以下命令:

sudo salt-cloud --list-images do
sudo salt-cloud --list-sizes do
sudo salt-cloud --list-locations do
sudo salt-cloud --help

这些命令的输出很重要,因为它提供了构建我们的虚拟服务器配置文件所需的变量。

三、 DigitalOcean 云配置文件


通过执行以下命令为您的服务器组创建 DigitalOcean 云 profiles

sudo vim /etc/salt/cloud.profiles.d/digital_ocean.conf

现在,在键盘上点击i键; 使用箭头键导航文本区域; 并复制和粘贴或创建您的digital_ocean.conf文件,使其类似于以下示例:

# Official distro images available for Arch, CentOS, Debian, Fedora, Ubuntu

ubuntu_512MB_ny2:
  provider: do
  image: Ubuntu 12.04.4 x64
  size: 512MB
#  script: Optional Deploy Script Argument
  location: New York 2
  private_networking: True

ubuntu_1GB_ny2:
  provider: do
  image: Ubuntu 12.04.4 x64
  size: 1GB
#  script: Optional Deploy Script Argument
  location: New York 2
  private_networking: True

ubuntu_2GB_ny2:
  provider: do
  image: Ubuntu 12.04.4 x64
  size: 2GB
#  script: Optional Deploy Script Argument
  location: New York 2
  private_networking: True

# Create additional profiles, if you wish
#[profile_alias_of_your_choosing]:
#  provider: do
#  image: [from salt-cloud --list-images do]
#  size: [from salt-cloud --list-sizes do]
#  script: [optional deployment script e.g. Ubuntu, Fedora, python-bootstrap, etc.]
#  location: [from salt-cloud --list-locations do]
#  private_networking: [True or False: currently only available in NY2 region]

要保存并退出,请点击键盘上的 Esc 键,然后按以下键:1) : 2) w 3) q 4) Enter。

除了提供的示例之外,Salt Cloud 还可以容纳 多个配置文件 ,这允许更多的可扩展配置,并且可以很好地与各种配置管理工具以及版本控制系统配合使用。

云虚拟机的操作系统支持


Salt Cloud 主要通过在新配置的 Droplet 可用时立即执行 脚本 来工作。 默认情况下,使用的脚本是 salt-bootstrap 脚本,除非在云配置文件中声明了不同的部署脚本。 首选方法(从 Salt Cloud v0.8.9 开始)当前是使用默认的 salt-bootstrap 脚本。 如果salt-bootstrap脚本不能满足你的需求,你可以通过Deploy Script Arguments或者自己写

高级主题


创建 VPS 时存在许多超出本文范围的选项。 在您对本教程中概述的基本原则感到满意后,您可能想了解如何使用 映射文件 创建更复杂的设置。 映射文件允许创建多个虚拟机并将其与特定配置文件相关联。

配置新的云服务器!


要创建新的云服务器,请执行(将 hostname 替换为您选择的任何主机名):

sudo salt-cloud --profile ubuntu_512MB_ny2 hostname

如果一切顺利,你应该有一个新配置的服务器,使用 Salt minion 引导(新 minion 的 SSH 密钥将自动添加到 Salt master)。 如果您想从同一个配置文件配置多个虚拟机,您可以使用单个命令来完成,例如

sudo salt-cloud -p ubuntu_1GB_ny2 hostname1 hostname2 hostname3

(注意 –profile-p 是可以互换的。)

奴才配置


要配置您的新云服务器群,请参阅:如何创建您的第一个盐配方 | 数字海洋

摧毁一个仆从


执行 Salt Cloud 命令时可以传递各种 选项 。 例如,要销毁特定的 minion,只需执行:

sudo salt-cloud -d hostname

其他资源


与往常一样,如果您在本指南中概述的步骤方面需要帮助,请通过在下方提出您的问题,向 DigitalOcean 社区寻求帮助。

提交人:https: [[“%3Ca|//plus.google.com/107285164064863645881?]] rel=author [[“%3C/a|”>巴勃罗·卡兰萨]]