community.general.flowadm (0.1.1) — module

Manage bandwidth resource control and priority for protocols, services and zones on Solaris/illumos systems

Authors: Adam Števko (@xen0l)

preview | supported by community

Install collection

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


Add to requirements.yml

  collections:
    - name: community.general
      version: 0.1.1

Description

Create/modify/remove networking bandwidth and associated resources for a type of traffic on a particular link.

Usage examples

  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Limit SSH traffic to 100M via vnic0 interface
- flowadm:
    link: vnic0
    flow: ssh_out
    transport: tcp
    local_port: 22
    maxbw: 100M
    state: present
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Reset flow properties
- flowadm:
    name: dns
    state: resetted
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Configure policy for EF PHB (DSCP value of 101110 from RFC 2598) with a bandwidth of 500 Mbps and a high priority.
- flowadm:
    link: bge0
    dsfield: '0x2e:0xfc'
    maxbw: 500M
    priority: high
    flow: efphb-flow
    state: present

Inputs

    
link:
    description:
    - Specifiies a link to configure flow on.
    required: false

name:
    aliases:
    - flow
    description: '- A flow is defined as a set of attributes based on Layer 3 and Layer
      4 headers, which can be used to identify a protocol, service, or a zone.

      '
    required: true

maxbw:
    description: '- Sets the full duplex bandwidth for the flow. The bandwidth is specified
      as an integer with one of the scale suffixes(K, M, or G for Kbps, Mbps, and Gbps).
      If no units are specified, the input value will be read as Mbps.

      '
    required: false

state:
    choices:
    - absent
    - present
    - resetted
    default: present
    description:
    - Create/delete/enable/disable an IP address on the network interface.
    required: false

dsfield:
    description: '- Identifies the 8-bit differentiated services field (as defined in
      RFC 2474). The optional dsfield_mask is used to state the bits of interest in the
      differentiated services field when comparing with the dsfield value. Both values
      must be in hexadecimal.

      '
    required: false

local_ip:
    description:
    - Identifies a network flow by the local IP address.
    required: false

priority:
    choices:
    - low
    - medium
    - high
    default: medium
    description:
    - Sets the relative priority for the flow.
    required: false

remote_ip:
    description:
    - Identifies a network flow by the remote IP address.
    required: false

temporary:
    default: false
    description:
    - Specifies that the configured flow is temporary. Temporary flows do not persist
      across reboots.
    required: false
    type: bool

transport:
    description: '- Specifies a Layer 4 protocol to be used. It is typically used in combination
      with I(local_port) to identify the service that needs special attention.

      '
    required: false

local_port:
    description:
    - Identifies a service specified by the local port.
    required: false

Outputs

dsfield:
  description: flow's differentiated services value
  returned: if dsfield is defined
  sample: 0x2e:0xfc
  type: str
link:
  description: flow's link
  returned: if link is defined
  sample: vnic0
  type: str
local_Ip:
  description: flow's local IP address
  returned: if local_ip is defined
  sample: 10.0.0.42
  type: str
local_port:
  description: flow's local port
  returned: if local_port is defined
  sample: 1337
  type: int
maxbw:
  description: flow's maximum bandwidth
  returned: if maxbw is defined
  sample: 100M
  type: str
name:
  description: flow name
  returned: always
  sample: http_drop
  type: str
priority:
  description: flow's priority
  returned: if priority is defined
  sample: low
  type: str
remote_Ip:
  description: flow's remote IP address
  returned: if remote_ip is defined
  sample: 10.0.0.42
  type: str
state:
  description: state of the target
  returned: always
  sample: present
  type: str
temporary:
  description: flow's persistence
  returned: always
  sample: 'True'
  type: bool
transport:
  description: flow's transport
  returned: if transport is defined
  sample: tcp
  type: str