在 Ubuntu 12.04 上使用盐云自动配置 DigitalOcean 云服务器

<$>[警告]

状态: 已弃用

本文介绍了一个不再支持的Ubuntu版本。 如果您目前正在运行Ubuntu 12.04的服务器,我们强烈建议您升级或迁移到受支持的Ubuntu版本:

原因: Ubuntu12.04于2017于4月28日到期,不再接收安全补丁或更新。本指南不再保留。

请参阅: 这本指南可能仍然是有用的参考,但可能不适用于其他Ubuntu版本。如果有的话,我们强烈建议使用针对您正在使用的Ubuntu版本编写的指南。您可以使用页面顶部的搜索功能来查找更新的版本。 <$>

简介


本教程以如何在Ubuntu12.04|DigitalOcean上安装Salt]为基础,旨在为读者提供一个可操作的Salt Cloud主服务器的简化、基本设置。然后,DigitalOcean用户可以使用该应用程序自动创建1台、2台或一组云服务器。

基础设施全面管理


Salte Stack是一个开源的云部署、配置管理、远程执行和监控包。您可能没有听说过Salt,,但您可能熟悉PuppetChef.SALT是一个类似的工具,但它在资源和需求方面相对较轻,越来越多的用户认为它更容易使用。Salt、Pupet和Chef等工具允许您同时在多台计算机上发出命令,以及安装和配置软件。SALT有两个主要方面:(I)配置管理和(Ii)远程执行。云部署留给了Salt Cloud。

Salte Cloud是一款公共云资源调配工具,旨在自动部署公共云服务器。它以一种干净的方式将Salt与DigitalOcean的应用程序编程接口)集成在一起,并(I)创建;(Ii)提供;(Iii)通过虚拟机mapsprofiles.管理水滴(即云或虚拟专用服务器DigitalOcean水滴可以单独创建,也可以成组创建,并且无需登录即可配置和全面管理。从部署单个虚拟机到映射和配置整个云,Salt Cloud可根据您的需要进行扩展。

前提条件


首先,参考如何在Ubuntu12.04|DigitalOcean上安装Salt],并在您的VPS上创建一个Salt主/从。

Security Hardening

任何可从公共互联网访问的服务器都应经过安全加固,您的Salt Master也不例外:

  • 将您的SSH端口从默认的22端口更改为 1024** 以下的随机端口** ,如Ubuntu 12.04;初始服务器设置]的** 第五步** 所述

Salt主人使用一个加密的ZeroMQ连接与奴才们通信。这些通信通过TCP端口4505和4506完成,这些端口需要在MASTER_ONLY上可访问。

  • 配置firewall并确保打开您的 自定义SSH端口** 和** TCP4505&4506端口** ;

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

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

禁用Password logins或部署Fail2banDenyHosts.

Create SSH Key Pair for DigitalOcean Control Panel

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

1sudo mkdir /keys

接下来,执行:

1sudo ssh-keygen -t rsa

系统将响应Enter FILE以保存密钥(/root/.ssh/id_rsa):。复制和粘贴:

1/keys/digital-ocean-salt-cloud

按键盘上的):,要求您输入_OPTIONAL_PASSWORD。不要 输入密码短语;而是两次按Enter键。

您的新公共(SSH)密钥现在位于Key/Digital-Ocean-Salt-Cloud.pub中。最后,执行:

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

将公钥复制并粘贴到您的DigitalOcean控制面板中,如步骤3如何在DigitalOcean Droplets中使用SSH密钥(在控制面板中将公钥的名称保存为Digital-Ocean-Salt-Cloud.pub)所述。

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


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

获取安装工具


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

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

1sudo apt-get -y install python-pip git

安装盐云依赖


首先,执行:

1sudo apt-get -y install python-m2crypto

然后,执行:

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

接下来,执行:

1sudo pip install apache-libcloud

安装盐云


最后,执行:

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

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

1salt-cloud --version

配置盐云


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

在排除Yaml文件的语法问题时,可以使用Online Yaml parser]。

一、核心配置


盐云的核心配置在云配置file.]中处理此文件由影响系统中所有云提供商的全局配置组成。此外,云文件是创建的奴才派生其配置的地方。

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

1sudo vim /etc/salt/cloud

在键盘上,点击I键;使用箭头键导航文本区域;然后复制和粘贴或创建云文件,使其与下面的示例类似(用您的Salt Master的FQDN替换master.youdomain.tld):

1provider: do
2# Set the location of the Salt master
3minion:
4  master: master.yourdomain.tld

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

为了进一步定制,还可以使用可以在核心配置文件中传递的其他杂项options,]。

云提供商模块♪


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

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

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

二、DigitalOcean云提供商配置


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

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

点击i键;使用键盘上的箭头键导航文本区域;然后复制、粘贴或创建Digital_Ocean an.conf 文件,使其与下面的示例类似:

1do:
2  provider: digital_ocean
3  # Digital Ocean account keys
4  client_key: YourClientIDCopiedFromControlPanel
5  api_key: YourAPIKeyCopiedFromControlPanel
6  ssh_key_name: digital-ocean-salt-cloud.pub
7  # Directory & file name on your Salt master
8  ssh_key_file: /keys/digital-ocean-salt-cloud

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

DigitalOcean接口


将Salt Cloud与DigitalOcean一起使用需要一个client_key和一个api_key。这些可以在DigitalOcean控制面板API访问选项卡下找到。

现在,按照如何使用DigitalOcean API中概述的步骤为您的帐户创建API密钥。您需要复制并粘贴您的DigitalOcean客户端IDAPI密钥到_cloud provider_ configuration文件中,如上所述。

接口交互


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

1sudo salt-cloud --list-images do
2sudo salt-cloud --list-sizes do
3sudo salt-cloud --list-locations do
4sudo salt-cloud --help

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

III.DigitalOcean云剖面


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

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

现在,在键盘上点击i键;使用箭头键导航文本区域;然后复制、粘贴或创建Digital_Ocean an.conf文件,使其与下面的示例类似:

 1# Official distro images available for Arch, CentOS, Debian, Fedora, Ubuntu
 2
 3ubuntu_512MB_ny2:
 4  provider: do
 5  image: Ubuntu 12.04.4 x64
 6  size: 512MB
 7#  script: Optional Deploy Script Argument
 8  location: New York 2
 9  private_networking: True
10
11ubuntu_1GB_ny2:
12  provider: do
13  image: Ubuntu 12.04.4 x64
14  size: 1GB
15#  script: Optional Deploy Script Argument
16  location: New York 2
17  private_networking: True
18
19ubuntu_2GB_ny2:
20  provider: do
21  image: Ubuntu 12.04.4 x64
22  size: 2GB
23#  script: Optional Deploy Script Argument
24  location: New York 2
25  private_networking: True
26
27# Create additional profiles, if you wish
28#[profile_alias_of_your_choosing]:
29#  provider: do
30#  image: [from salt-cloud --list-images do]
31#  size: [from salt-cloud --list-sizes do]
32#  script: [optional deployment script e.g. Ubuntu, Fedora, python-bootstrap, etc.]
33#  location: [from salt-cloud --list-locations do]
34#  private_networking: [True or False: currently only available in NY2 region]

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

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

云服务器操作系统支持


Salte Cloud的主要工作方式是在新调配的微滴可用时立即对其执行script。默认情况下,使用的脚本是Salte-Bootstrap script,,除非在云配置文件中声明了不同的部署脚本。目前首选的方法(从Salt Cloud v0.8.9开始)是使用默认的salt-bootstrap脚本。如果salt-bootstrap脚本不能满足您的需要,您可以传递Deploy Scrip ArgumentsorWrite Your own.

高级主题


在创建您的VP时存在许多选项,这些选项超出了本文的范围。在熟悉了本教程中概述的基本原则后,您可能希望了解如何使用MAP file.]创建更复杂的设置映射文件允许创建多个虚拟机并将其与特定配置文件相关联。

配置新的云服务器!


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

1sudo salt-cloud --profile ubuntu_512MB_ny2 hostname

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

1sudo salt-cloud -p ubuntu_1GB_ny2 hostname1 hostname2 hostname3

(Note--profile-p是可以互换的。

小不点配置


要配置新的云服务器,请参阅:如何创建您的第一个盐公式|DigitalOcean

销毁小黄人


执行Salt Cloud命令时可以传递各种options。例如,要摧毁某个特定的奴才,只需执行:

1sudo salt-cloud -d hostname

额外资源


一如既往,如果您在本操作指南中列出的步骤需要帮助,请向数字海洋社区寻求帮助,方法是在下面提出您的问题(S)。

Submitted by: Pablo Carranza
Published At
Categories with 技术
comments powered by Disqus