跳转到主要内容

Softlayer与juju的集成

项目描述

doc/softlayer.png

此软件包为juju提供了一个cli插件,允许在Softlayer上自动配置机器。我喜欢称它为slayer :-)

Softlayer是提供裸金属和基于Xen的云实例的顶级托管提供商,拥有众多配置选项,遍布多个数据中心,提供按月和按小时计费。由于配置裸金属机器所需时间较长(3-4小时),此插件仅支持云实例。

juju提供工作负载管理和编排,使用一组工作负载定义(charms),可以在运行时组装成复杂的拓扑结构。

您可以在juju的主页上了解更多关于juju的信息。 http://juju.ubuntu.com

安装

此插件需要较新版本的juju(>= 1.18)

适用于trusty(14.04)的合适版本已经分发,对于较老版本的Ubuntu,最新稳定版本可以从ppa获取

$ sudo add-apt-repository ppa:juju/stable
$ apt-get update && apt-get install juju
$ juju version
1.18.0-saucy-amd64

插件安装通过pip/easy_install完成,这是Python语言的包管理器,它默认在Ubuntu上可用。还推荐使用virtualenv来隔离此安装,以避免与系统包冲突

$ pip install -U juju-slayer

目前,传递依赖树是PyYAML、requests、softlayer。

配置

此提供程序的配置和设置有三个步骤。配置您的SoftLayer API密钥,向juju的配置文件添加一个环境,并在Softlayer机器上设置一个ssh密钥。

SoftLayer API密钥

拥有SoftLayer账户是先决条件。如果您没有SoftLayer账户,您可以在这里注册。

SoftLayer API密钥可以从https://manage.softlayer.com/Administrative/apiKeychain的账户仪表板获取

凭据可以通过环境变量或通过 sl 命令行的配置提供给插件。

  • 环境变量 SL_API_KEY 和 SL_USERNAME

此 Softlayer 插件使用 juju 核心的手动配置功能。因此,在部署工作负载之前,必须在环境中分配机器。我们稍后会进一步探讨。

SSH 密钥

此插件需要 SSH 密钥,并且公钥必须上传到 Softlayer 控制面板。或者,您也可以使用 sl 命令行程序(作为此插件的先决条件自动安装)直接上传。

$ sl sshkey add $USER-key -f ~/.ssh/id_rsa.pub

可以使用以下方法验证密钥:

$ sl sshkey list

默认情况下,Softlayer 账户中的所有密钥都将添加到启动的节点,因此不需要显式的用户配置。可以通过环境变量 SOFTLAYER_SSH_KEY="key_spec" 指定要使用的特定密钥,其中 key_spec 是密钥的 id(从命令行获取),或者是在 Softlayer 控制面板中找到的密钥的名称(https://manage.softlayer.com/Security/sshKeys

Juju 配置

接下来,让我们配置一个用于 Softlayer 的 juju 环境,在 'environments.yaml' 中添加一个空提供者环境,例如

environments:
  softlayer:
     type: manual
     bootstrap-host: null
     bootstrap-user: root

用法

我们需要告诉 juju 我们要使用哪个环境,有几种方法可以实现这一点,以下任何一种方法都有效

$ juju switch softlayer
$ export JUJU_ENV=softlayer

现在我们可以引导我们的 Softlayer 环境

$ juju sl bootstrap --constraints="mem=2g, region=sjc"

这将在一个圣地亚哥数据中心创建一个具有 2Gb 内存的服务器。

此插件创建的所有机器,如果查看 Softlayer 控制面板,其主机名前缀将是 juju 环境的名称,后缀/域名将为 juju.ubuntu。

引导环境后,我们可以通过 add-machine 命令添加更多机器,例如以下命令将添加 3 台各 2Gb 的机器

$ juju sl add-machine -n 2 --constraints="mem=2G, region=sjc"
$ juju status

environment: softlayer
machines:
  "0":
    agent-state: started
    agent-version: 1.18.0.1
    dns-name: 162.243.115.78
    instance-id: 'manual:'
    series: precise
    hardware: arch=amd64 cpu-cores=1 mem=2002M
  "1":
    agent-state: started
    agent-version: 1.18.0.1
    dns-name: 162.243.86.238
    instance-id: manual:162.243.86.238
    series: precise
    hardware: arch=amd64 cpu-cores=1 mem=2002M
  "2":
    agent-state: started
    agent-version: 1.18.0.1
    dns-name: 107.170.39.10
    instance-id: manual:107.170.39.10
    series: precise
    hardware: arch=amd64 cpu-cores=1 mem=2002M
services: {}

现在我们可以使用标准的 juju 命令部署服务工作负载,即 charm

$ juju deploy wordpress

如果不指定放置工作负载的机器,则机器将自动放置在环境中的空闲机器上。

有数百种可用的 charm 可以使用,您可以从 http://jujucharms.comhttp://manage.jujucharms.com/charms/precise 的“plain” html 版本了解更多信息。

我们可以使用手动放置来部署特定机器的目标

$ juju deploy mysql --to=2

当然,juju 的真正魔法在于其能够像乐高积木一样通过关系将这些工作负载组装在一起

$ juju add-relation wordpress mysql

可以通过机器 id 终止分配的机器。默认情况下,Softlayer 插件将强制终止机器,这将终止这些机器上的任何服务单元

$ juju sl terminate-machine 1 2

并且我们可以通过以下方式销毁整个环境:

$ juju sl destroy-environment

所有命令都有内置的帮助功能,并接受 -v 选项,这将打印运行时的详细输出。

有关更多信息,请访问 http://juju.ubuntu.com/docs

约束条件

约束条件是用于确定为环境分配哪种类型机器的选择标准。这些标准可能与机器的大小、位置或其他特定于提供者的标准有关。

此插件接受标准的 juju 约束

  • cpu-cores

  • memory

  • root-disk

此外,它还支持以下特定于提供者的约束。

  • “region”表示要利用的一个 Softlayer 数据中心。所有 Softlayer 数据中心都受支持,并定义了各种简写别名。例如,有效的值包括 ams01、dal01、dal05、dal06、sea01、sng01、sjc01、wdc01。插件默认将其留空,这将自动选择第一个可用的。

项目详细信息


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

juju-slayer-0.1.0.tar.gz (19.3 kB 查看哈希值)

上传时间 源代码

支持者

AWSAWS 云计算和安全赞助商DatadogDatadog 监控FastlyFastly CDNGoogleGoogle 下载分析MicrosoftMicrosoft PSF赞助商PingdomPingdom 监控SentrySentry 错误日志StatusPageStatusPage 状态页面