跳转到主要内容

juju与Digital Ocean集成

项目描述

Juju Digital Ocean Provider

https://www.digitalocean.com/assets/images/logos-badges/png/DO_Logo_Horizontal_Blue-a2b16fb8.png

此软件包为juju提供了一个命令行插件,允许在Digital Ocean上自动提供机器。我喜欢称它为JuDo :-)

Digital ocean是一家利用kvm和ssd在多个数据中心提供Linux VPS的提供商,价格极具竞争力,按小时计费。

juju提供了一套工作负载定义(charms)的集合,可以在运行时像乐高积木一样组装成复杂的应用程序拓扑结构,用于工作负载管理和编排。

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

https://travis-ci.org/kapilt/juju-digitalocean.svg?branch=master

安装

此插件需要juju版本 >= 1.18.0

在Ubuntu 14.04及更高版本中,juju自带了一个可用的版本。对于早期版本的Ubuntu,请使用稳定的PPA

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

插件安装通过pip/easy_install完成,这是Python语言包管理器,它在Ubuntu中默认可用。还建议使用virtualenv来沙盒此安装,从而避免与系统包冲突

$ pip install -U juju-docean

顺便提一下,目前传递依赖关系树是PyYAML、requests、dop。

设置

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

DO API密钥

您需要一个Digital Ocean账户,如果您没有Digital Ocean账户,您可以在这里注册 这里

您可以从您的账户仪表板在 https://cloud.digitalocean.com/settings/applications 获取Digital Ocean API的凭证

可以通过以下方式将凭证提供给插件

  • 环境变量DO_OAUTH_TOKEN

如果您正在使用较旧的juju-docean版本,它仍然接受通过以下方式提供的digitalocean api v1凭证

  • 环境变量DO_CLIENT_ID和DO_API_KEY

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

SSH密钥

此插件需要SSH密钥,并且公钥必须上传到Digital Ocean控制面板。默认情况下,将尝试Digital Ocean账户中的所有密钥,因此不需要用户配置。可以使用环境变量DO_SSH_KEY="key_name"指定要使用的特定密钥,其中key_name是在Digital Ocean管理控制台中的密钥名称。

juju配置

接下来,让我们为Digital Ocean配置一个juju环境,将手动提供者环境添加到'environments.yaml'中,例如

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

用法

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

$ juju switch digitalocean
$ export JUJU_ENV=digitalocean

现在我们可以启动我们的Digital Ocean环境

$ juju docean bootstrap --constraints="mem=2g, region=nyc1"

这将创建一个在nyc1数据中心具有2GB内存的droplet。

此插件创建的所有机器的droplet名称都将带有juju环境名称的前缀,如果您正在查看DO控制面板。

在环境启动后,我们可以通过add-machine命令向其中添加额外的机器,例如以下示例将添加2台额外的机器,每台机器2GB

$ juju docean add-machine -n 2 --constraints="mem=2G, region=nyc2"
$ juju status

environment: docean
machines:
  "0":
    agent-state: started
    agent-version: 1.17.2.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.17.2.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.17.2.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命令来部署服务工作负载,即charms

$ juju deploy wordpress

如果不指定放置工作负载的机器,则机器将自动进入环境中的未使用机器。

有数百种可用的charms可供使用,您可以从http://jujucharms.com了解更多信息,或者从http://manage.jujucharms.com/charms/precise查看'plain' html版本

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

$ juju deploy mysql --to=2

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

$ juju add-relation wordpress mysql

我们可以使用list-machines命令列出digitalocean中所有属于juju环境的机器。此命令直接查询Digital Ocean API,不与juju API交互。它还接受一个–all选项来列出Digital Ocean账户中的所有机器(无论环境如何)。

$ juju docean list-machines

Id       Name               Size  Status   Created      Region Address
2442349  ocean-0            512MB active   2014-08-25   nyc2   162.243.123.121
2442360  ocean-ef19ad5cc... 512MB active   2014-08-25   nyc2   162.243.51.21
2442361  ocean-145bf7a80... 512MB active   2014-08-25   nyc2   104.131.201.155
2442402  ocean-a9678a03e... 2GB   active   2014-08-25   nyc3   104.131.43.243
2442403  ocean-f35ffedd9... 2GB   active   2014-08-25   nyc3   104.131.43.242

我们可以通过机器ID终止分配的机器。默认情况下,使用docean插件,将强制终止机器,这也会终止这些机器上的任何服务单元

$ juju docean terminate-machine 1 2

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

$ juju docean destroy-environment

destroy-environment还接受一个–force选项,它仅使用Digital Ocean API。如果状态服务器或其他机器独立于juju被杀死,则很有用。

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

您可以从http://juju.ubuntu.com/docs了解更多信息

约束

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

此插件接受标准的juju约束

  • cpu-cores

  • memory

  • root-disk

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

  • ‘region’表示要使用的Digital Ocean数据中心。所有Digital Ocean数据中心均受支持,并定义了各种缩写别名。例如,有效的值包括ams2、nyc1、nyc2、sfo1、sg1。插件默认为nyc3。

  • ‘transfer’表示实例每月成本中包含的TB传输量(整数大小,单位为TB)。

贡献

欢迎提交错误报告和拉取请求。

贡献者

  • Kapil Thangavelu - 维护者

  • Bruce Frederiksen - DO v2支持

项目详情


下载文件

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

源代码分发

juju-docean-0.6.0.tar.gz (21.5 kB 查看哈希值)

上传时间 源代码

支持者