community.general.haproxy 模块 – 使用套接字命令启用、禁用和设置 HAProxy 后端服务器的权重

注意

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

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

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

要在剧本中使用它,请指定:community.general.haproxy

概要

  • 使用套接字命令启用、禁用、清空和设置 HAProxy 后端服务器的权重。

参数

参数

注释

agent

布尔值

在 community.general 1.0.0 中添加

禁用/启用代理检查(取决于 state 值)。

选项

  • false ← (默认)

  • true

backend

字符串

HAProxy 后端池的名称。

如果未设置此参数,它将自动检测。

drain

布尔值

等待服务器没有活动连接,或者直到达到由 wait_interval 和 wait_retries 确定的超时时间。

仅在状态更改为 MAINT 后才继续。

这将覆盖 shutdown_sessions 选项。

选项

  • false ← (默认)

  • true

fail_on_not_found

布尔值

当尝试启用/禁用不存在的后端主机时,会失败。

选项

  • false ← (默认)

  • true

health

布尔值

在 community.general 1.0.0 中添加

禁用/启用健康检查(取决于 state 值)。

选项

  • false ← (默认)

  • true

host

字符串 / 必需

要更改的后端主机的名称。

shutdown_sessions

布尔值

禁用服务器时,立即终止附加到指定服务器的所有会话。

这可用于在服务器置于维护模式后终止长时间运行的会话。会被 drain 选项覆盖。

选项

  • false ← (默认)

  • true

socket

路径

HAProxy 套接字文件的路径。

默认值: "/var/run/haproxy.sock"

state

字符串 / 必需

提供的后端主机的所需状态。

请注意,drain 状态仅受 HAProxy 1.5 或更高版本支持。在版本 < 1.5 上使用时,它将被忽略。

选项

  • "disabled"

  • "drain"

  • "enabled"

wait

布尔值

state=enabled 时,等待服务器报告 UP 的状态;当 state=disabled 时,等待服务器报告 MAINT 的状态;或者当 state=drain 时,等待服务器报告 DRAIN 的状态。

选项

  • false ← (默认)

  • true

wait_interval

整数

重试之间等待的秒数。

默认值: 5

wait_retries

整数

更改状态后检查状态的次数。

默认值: 25

weight

字符串

在参数中传递的值。

如果该值以 % 符号结尾,则新权重将相对于最初配置的权重。

相对权重仅允许介于 0 和 100% 之间,绝对权重允许介于 0 和 256 之间。

属性

属性

支持

描述

check_mode

支持:

可以在 check_mode 中运行,并返回更改的状态预测,而无需修改目标。

diff_mode

支持:

当处于 diff 模式时,将返回已更改的内容(或者在 check_mode 中可能需要更改的内容)的详细信息。

注意

注意

  • 启用、禁用和清空命令受到限制,只能在为“admin”级别配置的套接字上发出。例如,您可以在 haproxy.cfg 的 general 部分添加行“stats socket /var/run/haproxy.sock level admin”。请参阅 http://haproxy.1wt.eu/download/1.5/doc/configuration.txt

  • 取决于 netcat (nc) 是否可用;您需要先为您的操作系统安装相应的软件包,然后才能使用此模块。

示例

- name: Disable server in 'www' backend pool
  community.general.haproxy:
    state: disabled
    host: '{{ inventory_hostname }}'
    backend: www

- name: Disable server in 'www' backend pool, also stop health/agent checks
  community.general.haproxy:
    state: disabled
    host: '{{ inventory_hostname }}'
    health: true
    agent: true

- name: Disable server without backend pool name (apply to all available backend pool)
  community.general.haproxy:
    state: disabled
    host: '{{ inventory_hostname }}'

- name: Disable server, provide socket file
  community.general.haproxy:
    state: disabled
    host: '{{ inventory_hostname }}'
    socket: /var/run/haproxy.sock
    backend: www

- name: Disable server, provide socket file, wait until status reports in maintenance
  community.general.haproxy:
    state: disabled
    host: '{{ inventory_hostname }}'
    socket: /var/run/haproxy.sock
    backend: www
    wait: true

# Place server in drain mode, providing a socket file.  Then check the server's
# status every minute to see if it changes to maintenance mode, continuing if it
# does in an hour and failing otherwise.
- community.general.haproxy:
    state: disabled
    host: '{{ inventory_hostname }}'
    socket: /var/run/haproxy.sock
    backend: www
    wait: true
    drain: true
    wait_interval: 60
    wait_retries: 60

- name: Disable backend server in 'www' backend pool and drop open sessions to it
  community.general.haproxy:
    state: disabled
    host: '{{ inventory_hostname }}'
    backend: www
    socket: /var/run/haproxy.sock
    shutdown_sessions: true

- name: Disable server without backend pool name (apply to all available backend pool) but fail when the backend host is not found
  community.general.haproxy:
    state: disabled
    host: '{{ inventory_hostname }}'
    fail_on_not_found: true

- name: Enable server in 'www' backend pool
  community.general.haproxy:
    state: enabled
    host: '{{ inventory_hostname }}'
    backend: www

- name: Enable server in 'www' backend pool wait until healthy
  community.general.haproxy:
    state: enabled
    host: '{{ inventory_hostname }}'
    backend: www
    wait: true

- name: Enable server in 'www' backend pool wait until healthy. Retry 10 times with intervals of 5 seconds to retrieve the health
  community.general.haproxy:
    state: enabled
    host: '{{ inventory_hostname }}'
    backend: www
    wait: true
    wait_retries: 10
    wait_interval: 5

- name: Enable server in 'www' backend pool with change server(s) weight
  community.general.haproxy:
    state: enabled
    host: '{{ inventory_hostname }}'
    socket: /var/run/haproxy.sock
    weight: 10
    backend: www

- name: Set the server in 'www' backend pool to drain mode
  community.general.haproxy:
    state: drain
    host: '{{ inventory_hostname }}'
    socket: /var/run/haproxy.sock
    backend: www

作者

  • Ravi Bhure (@ravibhure)