community.digitalocean.digital_ocean_load_balancer 模块 – 管理 DigitalOcean 负载均衡器

注意

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

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

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

要在 playbook 中使用它,请指定:community.digitalocean.digital_ocean_load_balancer

community.digitalocean 1.10.0 中的新增功能

概要

  • 管理 DigitalOcean 负载均衡器

参数

参数

注释

baseurl

字符串

DigitalOcean API 基本 URL。

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

droplet_ids

列表 / 元素=整数

一个数组,包含分配给负载均衡器的 Droplet 的 ID。

创建负载均衡器时必填。

与 tag 互斥,您可以定义 tag 或 droplet_ids,但不能同时定义两者。

enable_backend_keepalive

布尔值

一个布尔值,指示是否维持到目标 Droplet 的 HTTP keepalive 连接。

选项

  • false ← (默认)

  • true

enable_proxy_protocol

布尔值

一个布尔值,指示是否使用 PROXY 协议。

选项

  • false ← (默认)

  • true

forwarding_rules

列表 / 元素=字典

一个对象数组,指定负载均衡器的转发规则。

创建负载均衡器时必填。

默认值: [{"certificate_id": "", "entry_port": 8080, "entry_protocol": "http", "target_port": 8080, "target_protocol": "http", "tls_passthrough": false}]

certificate_id

字符串

证书 ID

默认值: ""

entry_port

整数

入口端口

默认值: 8080

entry_protocol

字符串

入口协议

默认值: "http"

target_port

整数

目标端口

默认值: 8080

target_protocol

字符串

目标协议

默认值: "http"

tls_passthrough

布尔值

TLS 直通

选项

  • false ← (默认)

  • true

health_check

字典

一个对象,指定负载均衡器的健康检查设置。

默认值: {"check_interval_seconds": 10, "healthy_threshold": 5, "path": "/", "port": 80, "protocol": "http", "response_timeout_seconds": 5, "unhealthy_threshold": 3}

check_interval_seconds

整数

检查间隔(秒)

默认值: 10

healthy_threshold

整数

健康阈值

默认值: 5

path

字符串

路径

默认值: "/"

port

整数

端口

默认值: 80

protocol

字符串

协议

默认值: "http"

response_timeout_seconds

整数

响应超时(秒)

默认值: 5

unhealthy_threshold

整数

不健康阈值

默认值: 3

name

字符串 / 必填

负载均衡器实例的可读名称。

必填且必须唯一(当前 API 文档对此参数的说明未更新)。

oauth_token

别名:api_token

字符串

DigitalOcean OAuth 令牌。

可以使用其他几个环境变量来提供此值。

例如 - DO_API_TOKENDO_API_KEYDO_OAUTH_TOKENOAUTH_TOKEN

project_name

别名:project

字符串

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

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

目前仅在创建时支持。

默认值: ""

redirect_http_to_https

布尔值

一个布尔值,指示是否将对 80 端口上负载均衡器的 HTTP 请求重定向到 443 端口上的 HTTPS。

选项

  • false ← (默认)

  • true

region

别名:region_id

字符串

资源最初可用的区域的 slug 标识符。

size

字符串

负载均衡器的规模。

可用的规模为 lb-smalllb-mediumlb-large

创建后,您可以每小时调整负载均衡器的规模一次。

您不能在创建后的第一个小时内调整负载均衡器的规模。

除了 ams2nyc2sfo1 之外的所有区域,此字段已被 size_unit 字段替换。

每个可用的负载均衡器规模现在都等同于负载均衡器具有固定数量的节点。

公式为 lb-small = 1 个节点,lb-medium = 3 个节点,lb-large = 6 个节点。

选项

  • "lb-small" ← (默认)

  • "lb-medium"

  • "lb-large"

size_unit

整数

负载均衡器包含的节点数量。

每个额外的节点都会提高负载均衡器管理更多连接的能力。

负载均衡器可以进行扩展,并且您可以在创建后每小时最多更改一次节点数量。

此字段目前在 ams2nyc2sfo1区域不可用。

对于位于这些区域的负载均衡器,请使用 size 字段进行扩展。

值必须在 1-100 范围内。

默认值: 1

state

字符串

常用的,present 用于创建,absent 用于销毁

选项

  • "present" ← (默认)

  • "absent"

sticky_sessions

字典

指定负载均衡器粘性会话设置的对象。

默认值: {"type": "none"}

type

字符串

类型

默认值: "none"

tag

字符串

与您要动态分配到负载均衡器的 Droplet 关联的标签。

创建负载均衡器时必填。

与 droplet_ids 互斥,您可以定义 tag 或 droplet_ids,但不能同时定义两者。

timeout

整数

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

默认值: 30

validate_certs

布尔值

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

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

选项

  • false

  • true ← (默认)

vpc_uuid

字符串

指定分配负载均衡器的 VPC 的 UUID 的字符串。

如果未指定,则使用该区域中的默认 VPC。

wait

布尔值

等待负载均衡器运行后再返回。

选项

  • false

  • true ← (默认)

wait_timeout

整数

创建负载均衡器时,等待超时的时间(秒)。

默认值: 600

示例

- name: Create a Load Balancer
  community.digitalocean.digital_ocean_load_balancer:
    state: present
    name: test-loadbalancer-1
    droplet_ids:
      - 12345678
    region: nyc1
    forwarding_rules:
      - entry_protocol: http
        entry_port: 8080
        target_protocol: http
        target_port: 8080
        certificate_id: ""
        tls_passthrough: false

- name: Create a Load Balancer (and assign to Project "test")
  community.digitalocean.digital_ocean_load_balancer:
    state: present
    name: test-loadbalancer-1
    droplet_ids:
      - 12345678
    region: nyc1
    forwarding_rules:
      - entry_protocol: http
        entry_port: 8080
        target_protocol: http
        target_port: 8080
        certificate_id: ""
        tls_passthrough: false
    project: test

- name: Create a Load Balancer and associate it with a tag
  community.digitalocean.digital_ocean_load_balancer:
    state: present
    name: test-loadbalancer-1
    tag: test-tag
    region: tor1

返回值

常见的返回值已在 此处 记录,以下是此模块特有的字段

描述

assign_status

字符串

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

返回: changed

示例: "assigned"

data

字典

一个 DigitalOcean 负载均衡器

返回: changed

示例: {"load_balancer": {"algorithm": "round_robin", "created_at": "2021-08-22T14:23:41Z", "droplet_ids": [261172461], "enable_backend_keepalive": false, "enable_proxy_protocol": false, "forwarding_rules": [{"certificate_id": "", "entry_port": 8080, "entry_protocol": "http", "target_port": 8080, "target_protocol": "http", "tls_passthrough": false}], "health_check": {"check_interval_seconds": 10, "healthy_threshold": 5, "path": "/", "port": 80, "protocol": "http", "response_timeout_seconds": 5, "unhealthy_threshold": 3}, "id": "b4fdb507-70e8-4325-a89e-d02271b93618", "ip": "159.203.150.113", "name": "test-loadbalancer-1", "redirect_http_to_https": false, "region": {"available": true, "features": ["backups", "ipv6", "metadata", "install_agent", "storage", "image_transfer"], "name": "New York 3", "sizes": ["s-1vcpu-1gb", "s-1vcpu-1gb-amd", "s-1vcpu-1gb-intel", "s-1vcpu-2gb", "s-1vcpu-2gb-amd", "s-1vcpu-2gb-intel", "s-2vcpu-2gb", "s-2vcpu-2gb-amd", "s-2vcpu-2gb-intel", "s-2vcpu-4gb", "s-2vcpu-4gb-amd", "s-2vcpu-4gb-intel", "s-4vcpu-8gb", "c-2", "c2-2vcpu-4gb", "s-4vcpu-8gb-amd", "s-4vcpu-8gb-intel", "g-2vcpu-8gb", "gd-2vcpu-8gb", "s-8vcpu-16gb", "m-2vcpu-16gb", "c-4", "c2-4vcpu-8gb", "s-8vcpu-16gb-amd", "s-8vcpu-16gb-intel", "m3-2vcpu-16gb", "g-4vcpu-16gb", "so-2vcpu-16gb", "m6-2vcpu-16gb", "gd-4vcpu-16gb", "so1_5-2vcpu-16gb", "m-4vcpu-32gb", "c-8", "c2-8vcpu-16gb", "m3-4vcpu-32gb", "g-8vcpu-32gb", "so-4vcpu-32gb", "m6-4vcpu-32gb", "gd-8vcpu-32gb", "so1_5-4vcpu-32gb", "m-8vcpu-64gb", "c-16", "c2-16vcpu-32gb", "m3-8vcpu-64gb", "g-16vcpu-64gb", "so-8vcpu-64gb", "m6-8vcpu-64gb", "gd-16vcpu-64gb", "so1_5-8vcpu-64gb", "m-16vcpu-128gb", "c-32", "c2-32vcpu-64gb", "m3-16vcpu-128gb", "m-24vcpu-192gb", "g-32vcpu-128gb", "so-16vcpu-128gb", "m6-16vcpu-128gb", "gd-32vcpu-128gb", "m3-24vcpu-192gb", "g-40vcpu-160gb", "so1_5-16vcpu-128gb", "m-32vcpu-256gb", "gd-40vcpu-160gb", "so-24vcpu-192gb", "m6-24vcpu-192gb", "m3-32vcpu-256gb", "so1_5-24vcpu-192gb", "m6-32vcpu-256gb"], "slug": "nyc3"}, "size": "lb-small", "status": "active", "sticky_sessions": {"type": "none"}, "tag": "", "vpc_uuid": "b8fd9a58-d93d-4329-b54a-78a397d64855"}}

msg

字符串

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

返回: changed

示例: "No project named test2 found"

resources

字典

项目分配中涉及的资源分配

返回: changed

示例: {"assigned_at": "2021-10-25T17:39:38Z", "links": {"self": "https://api.digitalocean.com/v2/load_balancers/17d171d0-8a8b-4251-9c18-c96cc515d36d"}, "status": "assigned", "urn": "do:loadbalancer:17d171d0-8a8b-4251-9c18-c96cc515d36d"}

作者

  • Mark Mercado (@mamercad)