跳转到主要内容

用于构建Digital Ocean动态清单的Ansible库。

项目描述

droplets

droplets 帮助管理Digital Ocean (DO) 弹珠。 droplets 还具有作为Ansible playbooks的清单脚本的 Ability。

使用 droplets

基本命令行用法允许您构建自己的脚本以连接到您的DO环境。 脚本有两个目的。 首先,根据定义的蓝图创建和销毁弹珠。 其次,作为这些弹珠的Ansible invetory脚本。

创建脚本

使用 droplets,您将为您的不同DO部署定义自己的脚本。 在您的脚本中,您将定义一个 blueprint

调用主函数

main 需要一个蓝图,并接受一些可选参数。

  • image(默认:ubuntu-14-04-x64)
  • size(默认:512mb)
  • region(默认:nyc3)
  • prefix(默认:'')
  • api_token(默认:None)

除非您在调用 main 或在蓝图定义的组定义中明确覆盖参数,否则将使用默认值。

prefix 在创建不同DO环境的脚本时很有用。 prefix 将用于生成您的组实例的名称。 例如,如果您使用 prefix=staging- 调用 main,并在您的蓝图定义中有一个 app 组,则您的实例将具有名称 staging-app00staging-app01 等...

定义蓝图

蓝图是一个标准的Python字典。蓝图应包含每个组的键条目。每个组的值应是一个字典,用作存储要传递给Ansible Playbook的hostvars的键/值存储。

组可以包含一些特殊键,这些键将覆盖main的默认值。

  • size(默认:512mb)
  • image(默认:ubuntu-14-04-x64)
  • region(默认:nyc3)
  • n(实例数量,默认:1)

典型的组名有appdbloadbalancer等。当创建实例名称时,droplet脚本将使用您的组名称以及下面的prefix(见下文)。

API令牌

您还必须提供一个API令牌。有两种方式可以做到这一点。首先,您可以将api_token关键字参数传递给main调用。其次,您可以将环境变量'DIGITAL_OCEAN_TOKEN'设置为您的令牌值。如果您打算将droplet脚本存储在公共仓库中,则后者很有用。

示例

以下是一个非常简单的示例,包含单个应用程序服务器和单个数据库服务器蓝图。它们不覆盖任何默认值,并且app组将hostvar git_branch传递给playbook。

#!/usr/bin/env python

import sys
from droplets import main

blueprint = {
    'app': {
        'git_branch': 'master',
    },
    'db': {},
}

if __name__ == '__main__':
    main(blueprint, api_token='XXX', prefix='staging-')

运行脚本

现在定义了此预发布脚本,我们可以直接对其发出命令。例如

./staging --help

Options:
    -h --help    Show this screen
    --list       Outputs inventory in json.
    --human      Outputs inventory in format suitable for human beings.
    --reconcile  Creates/deletes droplets as necessary to match blueprint.
    --hostkeys   Gets ssh host keys for hosts in inventory and install them in
                ~/.ssh/known_hosts
    --destroy=<group>    Destroys the droplets in the specified group.

默认情况下,脚本将像传递了--list选项一样执行。这允许droplets脚本文档作为ansible-playbook命令的清单脚本。

如果我们想创建这些实例以准备playbook运行,我们将使用--reconcile选项。值得一提的是,--reconcile不会回溯性地解决对sizeimageregion的更改。您需要登录到DO以调整大小,或者可以使用组的--destroy然后使用--reconsile

与ansible-playbook一起运行

现在您已经以您想要的方式部署了DO实例(使用--reconcile)。您可以将droplets脚本作为清单脚本用于您的playbook。

ansible-playbook -i staging deploy-staging.yaml

项目详情


下载文件

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

源分布

droplets-1.3.0.tar.gz (7.3 kB 查看哈希)

上传时间

构建分布

droplets-1.3.0-py2.py3-none-any.whl (6.8 kB 查看哈希)

上传时间 Python 2 Python 3