在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,但您可能熟悉 Puppet 或 Chef。 Salt是一个类似的工具,但它在资源和需求方面都比较轻量级,越来越多的用户认为它好用得多。 Salt、Puppet 和 Chef 等工具允许您同时在多台机器上发出命令,以及安装和配置软件。 Salt有两个主要方面:(i)配置管理和(ii)远程执行。 云部署留给 Salt Cloud。
Salt Cloud 是一种公有云供应工具,旨在自动部署公有云服务器。 它将 Salt 与 DigitalOcean 的应用程序编程接口 (API) 以一种干净的方式——并且(i)创造; (ii) 规定和 (iii) 管理液滴(即 云或虚拟专用服务器)通过虚拟机 maps 和 profiles。 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 包。
要在您的系统上安装 pip
和 git
,请执行:
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_key 和 api_key。 这些可以在“API 访问”选项卡下的 DigitalOcean 控制面板 中找到。
现在,按照 如何使用 DigitalOcean API 中概述的步骤为您的帐户创建一个 API 密钥。 您需要将 DigitalOcean Client ID
和 API 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
其他资源
- 盐云文档;
- Salt Starters(查找和共享 Salt-Stack 相关代码的地方,例如状态树或自定义模块);
- 盐堆公式 | GitHub;
- 常见问题 | 盐栈;
- 所有 DigitalOcean 配置管理 文章。
与往常一样,如果您在本指南中概述的步骤方面需要帮助,请通过在下方提出您的问题,向 DigitalOcean 社区寻求帮助。