community.digitalocean.digital_ocean_database 模块 – 创建和删除 DigitalOcean 数据库

注意

此模块是 community.digitalocean 集合(版本 1.27.0)的一部分。

如果您使用的是 ansible 包,您可能已经安装了此集合。 它不包含在 ansible-core 中。 要检查是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.digitalocean

要在剧本中使用它,请指定:community.digitalocean.digital_ocean_database

community.digitalocean 1.3.0 中的新功能

概要

  • 在 DigitalOcean 中创建和删除数据库,并可选择等待其上线。

  • DigitalOcean 的托管数据库服务简化了高可用性数据库集群的创建和管理。

  • 目前,它提供对 PostgreSQL、Redis、MySQL 和 MongoDB 的支持。

参数

参数

注释

baseurl

字符串

DigitalOcean API 基本 URL。

默认值: "https://api.digitalocean.com/v2"

引擎

字符串 / 必填

表示集群使用的数据库引擎的 slug。

可能的值为 pg(PostgreSQL)、mysql(MySQL)、redis(Redis)和 mongodb(MongoDB)。

选择

  • "pg"

  • "mysql"

  • "redis"

  • "mongodb"

id

别名:database_id

整数

可用于识别和引用数据库集群的唯一 ID。

name

字符串 / 必填

数据库集群的唯一、人类可读的名称。

num_nodes

整数

数据库集群中的节点数。

有效选择为 1、2 或 3。

选择

  • 1 ←(默认)

  • 2

  • 3

oauth_token

别名:api_token

字符串

DigitalOcean OAuth 令牌。

还有其他几个环境变量可用于提供此值。

例如,-DO_API_TOKENDO_API_KEYDO_OAUTH_TOKENOAUTH_TOKEN

private_network_uuid

字符串

指定分配数据库集群的 VPC 的 UUID 的字符串。

project_name

别名:project

字符串

要将资源分配到的项目(项目名称,而不是 UUID)。

默认为帐户的默认项目(空字符串)。

当前仅在创建数据库时受支持。

默认值: ""

region

别名:region_id

字符串 / 必填

数据库集群所在的区域的 slug 标识符。

size

别名:size_id

字符串 / 必填

表示数据库集群中节点大小的 slug 标识符。

有关支持的大小,请参阅 https://docs.digitalocean.com/reference/api/api-reference/#operation/create_database_cluster

state

字符串

指示目标所需的狀態。

选择

  • "present" ←(默认)

  • "absent"

tags

列表 / elements=字符串

已应用于数据库集群的标签数组。

timeout

整数

用于轮询 DigitalOcean API 的超时时间(秒)。

默认值: 30

validate_certs

布尔值

如果设置为 no,则不会验证 SSL 证书。

仅当在个人控制的使用自签名证书的站点上使用时,才应将其设置为 no

选择

  • false

  • true ←(默认)

version

字符串

一个字符串,表示集群正在使用的数据库引擎的版本。

对于 pg,版本为 10、11 和 12。

对于 mysql,版本为 8。

对于 redis,版本为 5。

对于 mongodb,版本为 4。

等待

布尔值

在返回之前,等待数据库上线。

选择

  • false

  • true ←(默认)

wait_timeout

整数

创建数据库时,等待放弃之前的超时时间,以秒为单位。

默认值: 600

示例

- name: Create a Redis database
  community.digitalocean.digital_ocean_database:
    oauth_token: "{{ lookup('ansible.builtin.env', 'DO_API_KEY') }}"
    state: present
    name: testdatabase1
    engine: redis
    size: db-s-1vcpu-1gb
    region: nyc1
    num_nodes: 1
  register: my_database

- name: Create a Redis database (and assign to Project "test")
  community.digitalocean.digital_ocean_database:
    oauth_token: "{{ lookup('ansible.builtin.env', 'DO_API_KEY') }}"
    state: present
    name: testdatabase1
    engine: redis
    size: db-s-1vcpu-1gb
    region: nyc1
    num_nodes: 1
    project_name: test
  register: my_database

返回值

常见的返回值记录在这里,以下是此模块独有的字段

描述

assign_status

字符串

分配状态 (ok, not_found, assigned, already_assigned, service_down)

返回值: changed

示例: "assigned"

data

字典

一个 DigitalOcean 数据库

返回值: success

示例: {"database": {"connection": {"database": "", "host": "testdatabase1-do-user-3097135-0.b.db.ondigitalocean.com", "password": "REDACTED", "port": 25061, "protocol": "rediss", "ssl": true, "uri": "rediss://default:[email protected]:25061", "user": "default"}, "created_at": "2021-04-21T15:41:14Z", "db_names": null, "engine": "redis", "id": "37de10e4-808b-4f4b-b25f-7b5b3fd194ac", "maintenance_window": {"day": "monday", "hour": 41627, "pending": false}, "name": "testdatabase1", "num_nodes": 1, "private_connection": {"database": "", "host": "private-testdatabase1-do-user-3097135-0.b.db.ondigitalocean.com", "password": "REDIS", "port": 25061, "protocol": "rediss", "ssl": true, "uri": "rediss://default:REDACTED@private-testdatabase1-do-user-3097135-0.b.db.ondigitalocean.com:25061", "user": "default"}, "private_network_uuid": "0db3519b-9efc-414a-8868-8f2e6934688c,", "region": "nyc1", "size": "db-s-1vcpu-1gb", "status": "online", "tags": null, "users": null, "version": 6}}

msg

字符串

执行过程中遇到的信息或错误消息

返回值: changed

示例: "No project named test2 found"

resources

字典

项目中涉及的资源分配

返回值: changed

示例: {"assigned_at": "2021-10-25T17:39:38Z", "links": {"self": "https://api.digitalocean.com/v2/databases/126355fa-b147-40a6-850a-c44f5d2ad418"}, "status": "assigned", "urn": "do:dbaas:126355fa-b147-40a6-850a-c44f5d2ad418"}

作者

  • Mark Mercado (@mamercad)