juju与Digital Ocean集成
项目描述
Juju Digital Ocean Provider
此软件包为juju提供了一个命令行插件,允许在Digital Ocean上自动提供机器。我喜欢称它为JuDo :-)
Digital ocean是一家利用kvm和ssd在多个数据中心提供Linux VPS的提供商,价格极具竞争力,按小时计费。
juju提供了一套工作负载定义(charms)的集合,可以在运行时像乐高积木一样组装成复杂的应用程序拓扑结构,用于工作负载管理和编排。
您可以在juju的主页上了解更多关于juju的信息。 http://juju.ubuntu.com
安装
此插件需要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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 78fe9e1f69b9274d124aae06a7795f1084efe8256e96505d209750a45d4785f4 |
|
MD5 | 83294440aed106ee34ba6657521a2716 |
|
BLAKE2b-256 | 37d55f06db6932dcc40a63e414509e94c1580854ae9a5527846d94d2fb4a0043 |