community.general.apache2_mod_proxy (8.5.0) — module

Set and/or get members' attributes of an Apache httpd 2.4 mod_proxy balancer pool

Authors: Olivier Boukili (@oboukili)

Install collection

Install with ansible-galaxy collection install community.general:==8.5.0


Add to requirements.yml

  collections:
    - name: community.general
      version: 8.5.0

Description

Set and/or get members' attributes of an Apache httpd 2.4 mod_proxy balancer pool, using HTTP POST and GET requests. The httpd mod_proxy balancer-member status page has to be enabled and accessible, as this module relies on parsing this page. This module supports ansible check_mode, and requires BeautifulSoup python module.

Usage examples

  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Get all current balancer pool members attributes
  community.general.apache2_mod_proxy:
    balancer_vhost: 10.0.0.2
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Get a specific member attributes
  community.general.apache2_mod_proxy:
    balancer_vhost: myws.mydomain.org
    balancer_suffix: /lb/
    member_host: node1.myws.mydomain.org
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Enable all balancer pool members:
- name: Get attributes
  community.general.apache2_mod_proxy:
    balancer_vhost: '{{ myloadbalancer_host }}'
  register: result
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Enable all balancer pool members
  community.general.apache2_mod_proxy:
    balancer_vhost: '{{ myloadbalancer_host }}'
    member_host: '{{ item.host }}'
    state: present
  with_items: '{{ result.members }}'
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Gracefully disable a member from a loadbalancer node:
- name: Step 1
  community.general.apache2_mod_proxy:
    balancer_vhost: '{{ vhost_host }}'
    member_host: '{{ member.host }}'
    state: drained
  delegate_to: myloadbalancernode
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Step 2
  ansible.builtin.wait_for:
    host: '{{ member.host }}'
    port: '{{ member.port }}'
    state: drained
  delegate_to: myloadbalancernode
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Step 3
  community.general.apache2_mod_proxy:
    balancer_vhost: '{{ vhost_host }}'
    member_host: '{{ member.host }}'
    state: absent
  delegate_to: myloadbalancernode

Inputs

    
tls:
    default: false
    description:
    - Use https to access balancer management page.
    type: bool

state:
    description:
    - Desired state of the member host. (absent|disabled),drained,hot_standby,ignore_errors
      can be simultaneously invoked by separating them with a comma (e.g. state=drained,ignore_errors).
    - 'Accepted state values: ["present", "absent", "enabled", "disabled", "drained",
      "hot_standby", "ignore_errors"]'
    type: str

member_host:
    description:
    - (ipv4|ipv6|fqdn) of the balancer member to get or to set attributes to. Port number
      is autodetected and should not be specified here. If undefined, apache2_mod_proxy
      module will return a members list of dictionaries of all the current balancer pool
      members' attributes.
    type: str

balancer_vhost:
    description:
    - (ipv4|ipv6|fqdn):port of the Apache httpd 2.4 mod_proxy balancer pool.
    required: true
    type: str

validate_certs:
    default: true
    description:
    - Validate ssl/tls certificates.
    type: bool

balancer_url_suffix:
    default: /balancer-manager/
    description:
    - Suffix of the balancer pool url required to access the balancer pool status page
      (e.g. balancer_vhost[:port]/balancer_url_suffix).
    type: str

Outputs

member:
  description: specific balancer member information dictionary, returned when apache2_mod_proxy
    module is invoked with member_host parameter.
  returned: success
  sample:
    attributes:
      Busy: '0'
      Elected: '42'
      Factor: '1'
      From: 136K
      Load: '0'
      Route: null
      RouteRedir: null
      Set: '0'
      Status: 'Init Ok '
      To: ' 47K'
      Worker URL: null
    balancer_url: http://10.10.0.2/balancer-manager/
    host: 10.10.0.20
    management_url: http://10.10.0.2/lb/?b=mywsbalancer&w=http://10.10.0.20:8080/ws&nonce=8925436c-79c6-4841-8936-e7d13b79239b
    path: /ws
    port: 8080
    protocol: http
    status:
      disabled: false
      drained: false
      hot_standby: false
      ignore_errors: false
  type: dict
members:
  description: list of member (defined above) dictionaries, returned when apache2_mod_proxy
    is invoked with no member_host and state args.
  returned: success
  sample:
  - attributes:
      Busy: '0'
      Elected: '42'
      Factor: '1'
      From: 136K
      Load: '0'
      Route: null
      RouteRedir: null
      Set: '0'
      Status: 'Init Ok '
      To: ' 47K'
      Worker URL: null
    balancer_url: http://10.10.0.2/balancer-manager/
    host: 10.10.0.20
    management_url: http://10.10.0.2/lb/?b=mywsbalancer&w=http://10.10.0.20:8080/ws&nonce=8925436c-79c6-4841-8936-e7d13b79239b
    path: /ws
    port: 8080
    protocol: http
    status:
      disabled: false
      drained: false
      hot_standby: false
      ignore_errors: false
  - attributes:
      Busy: '0'
      Elected: '42'
      Factor: '1'
      From: 136K
      Load: '0'
      Route: null
      RouteRedir: null
      Set: '0'
      Status: 'Init Ok '
      To: ' 47K'
      Worker URL: null
    balancer_url: http://10.10.0.2/balancer-manager/
    host: 10.10.0.21
    management_url: http://10.10.0.2/lb/?b=mywsbalancer&w=http://10.10.0.21:8080/ws&nonce=8925436c-79c6-4841-8936-e7d13b79239b
    path: /ws
    port: 8080
    protocol: http
    status:
      disabled: false
      drained: false
      hot_standby: false
      ignore_errors: false
  type: list