From a6adced609472d88cb525f2ef1a4054b52692f76 Mon Sep 17 00:00:00 2001 From: omnom62 <75066712+omnom62@users.noreply.github.com> Date: Wed, 19 Aug 2026 22:21:24 +1000 Subject: T6820: HA/VRRP module (#438) * Init VRRP * RM Templates * rm_templates for global_parameters * virtual servers rm_templates * update * sync-group rm_tempalte * VRRP GP GARP template rework * RM template and new facts logic * vrrp argspec * Suppressing backup versions of files * Facts for vrrp * VRRP facts updates * Facts almost done * Argspec vrrp * Argspec completed * Argspec and facts for VRRP finished * Documentation for VRRP module * Sanity tests fixes and documentation * VRRP config started * Doc fixes * Doc fixes * Doc fixes * Configuration for VRRP * wip * Updates to facts, config, templates in VRRP * VRRP groups templates, facts and config * VRRP works - templates for groups and virtual_servers * Mid-result * VRRP VS prototype * Groups processor update * Reworked vrrp.group and vrrp.group.garp processors * VRRP grp recursive * VRRP groups and vserver contd * Update to VRRP want processing * Updates to VRRP funcs * VRRP VS RS config * Sanity test fixes midway * VRRP Real server fixes * VRRP sync_group * Latest fixes to etire VRRP config parsing * Midway compare function * update to vrrp group processing * Mid results for merge parsers / compare * Working merge for vrrp and virtserv * Final merge / compare * WIP replaced / Delete * Updates to state processing * Mid-result for virtual_servers * Mid result commit * Testing high-availability vrrp processing * Retesting vrrp stanza * Mid results * Real server parsing * SNMP vrrp fixed * Sanity fixes * Purged, rendered, gathered, parsed action states for VRRP * VRRP integration and unit tests; code fixes midway results * Sanity check fixes * Merged integration test case for VRRP * VRRP rendered integration test case * Sanity tests fixes * VRRP unit tests - merged and purged * Mid-way replaced, deleted and overriden work. Description string fix * Updates to integration and unit tests for VRRP * Mid-result for deleted state VRRP * Mid-results for VRRP deleted * Deleted vrrp midway results * Deleted state function for VRRP * Deleted state VRRP, sanity checks fix * Deleted integration tests * Deleted_all unit and integration tests * Deleted_all unit and integration tests * Sanity check fixes * Mid-results overridden VRRP * WIP vrrp overridden sit and uat * VRRP overridden sanity test * UAT overriden vrrp * UAT deleted for vrrp * VRRP replaced UAT and SIT * VRRP RTT SIT * VRRP SIT suite ready * Finals for VRRP module - clean-up and fixed UAT * VRRP module doc examples updated * VRRP sanity tests fixes * VRRP disbale default fix * Misc lint fixes * Misc Lint fixes * remove old files * Rename vyos_vrrp -> vyos_ha * Rename vyos_vrrp to vyos_ha * doc fixes * Changes to HA module * HA module fixes * Sanity test fixes * changelog * ignore for HA/VRRP and 2.22 * AI-generated comments and fixes * Fixes after review * Misc fixes * Misc fixes * Misc fixes * Misc fixes * Sanity fixes * Sanity fixes * Misc changes * T6820: code refactor to address valid AI comments * T6820: Optimising facts, config and rm_templates * T6820: UAT fixes * T6820: docstring for utils/combine() * T6820 Misc fixes to changelog --------- Co-authored-by: Gaige B Paulsen --- docs/vyos.vyos.vyos_ha_module.rst | 2523 +++++++++++++++++++++++++++++++++++++ 1 file changed, 2523 insertions(+) create mode 100644 docs/vyos.vyos.vyos_ha_module.rst (limited to 'docs') diff --git a/docs/vyos.vyos.vyos_ha_module.rst b/docs/vyos.vyos.vyos_ha_module.rst new file mode 100644 index 00000000..5e03661c --- /dev/null +++ b/docs/vyos.vyos.vyos_ha_module.rst @@ -0,0 +1,2523 @@ +.. _vyos.vyos.vyos_ha_module: + + +***************** +vyos.vyos.vyos_ha +***************** + +**Manage VRRP and load balancer configuration on VyOS** + + +Version added: 1.0.0 + +.. contents:: + :local: + :depth: 1 + + +Synopsis +-------- +- This module configures VRRP groups, global VRRP parameters, VRRP sync groups, and LVS-style virtual servers on VyOS 1.4+. +- Supports creation, modification, deletion, replacement, rendering, and parsing of VRRP-related configuration. + + + + +Parameters +---------- + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterChoices/DefaultsComments
+
+ config + +
+ dictionary +
+
+ +
Full VRRP and virtual server configuration.
+
+
+ disable + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Disable all VRRP and L4-LB configuration under this module.
+
+
+ virtual_servers + +
+ list + / elements=dictionary +
+
+ +
List of load balancer virtual server (LVS) definitions.
+
+
+ address + +
+ string +
+
+ +
Virtual IP address for the server.
+
+
+ algorithm + +
+ string +
+
+ +
Load balancing algorithm used for dispatching connections.
+
+
+ delay_loop + +
+ integer +
+
+ +
Delay loop interval in seconds.
+
+
+ forward_method + +
+ string +
+
+
    Choices: +
  • direct
  • +
  • nat
  • +
+
+
Forwarding method used by LVS.
+
+
+ fwmark + +
+ integer +
+
+ +
Firewall mark for LVS traffic classification.
+
+
+ name + +
+ string + / required +
+
+ +
Unique identifier for the virtual server.
+
+
+ persistence_timeout + +
+ integer +
+
+ +
Client persistence timeout in seconds.
+
+
+ port + +
+ integer +
+
+ +
TCP/UDP port provided by the virtual service.
+
+
+ protocol + +
+ string +
+
+
    Choices: +
  • tcp
  • +
  • udp
  • +
+
+
Transport protocol for the virtual server.
+
+
+ real_server + +
+ list + / elements=dictionary +
+
+ +
Backend real servers behind the virtual service.
+
+
+ address + +
+ string + / required +
+
+ +
Real server IP address.
+
+
+ connection_timeout + +
+ integer +
+
+ +
Backend server connection timeout.
+
+
+ health_check_script + +
+ string +
+
+ +
Path to health check script used for backend validation.
+
+
+ port + +
+ integer +
+
+ +
Backend server port.
+
+
+ vrrp + +
+ dictionary +
+
+ +
VRRP configuration including groups, global parameters, SNMP settings, and sync-groups.
+
+
+ global_parameters + +
+ dictionary +
+
+ +
Global VRRP tuning parameters.
+
+
+ garp + +
+ dictionary +
+
+ +
Gratuitous ARP related configuration.
+
+
+ interval + +
+ integer +
+
+ +
GARP interval in seconds.
+
+
+ master_delay + +
+ integer +
+
+ +
Delay before sending GARP as master.
+
+
+ master_refresh + +
+ integer +
+
+ +
Refresh interval for master GARP announcements.
+
+
+ master_refresh_repeat + +
+ integer +
+
+ +
Number of times to repeat refresh announcements.
+
+
+ master_repeat + +
+ integer +
+
+ +
Number of GARP repeats when transitioning to master.
+
+
+ startup_delay + +
+ integer +
+
+ +
Delay before VRRP starts after boot.
+
+
+ version + +
+ string +
+
+ +
VRRP protocol version.
+
+
+ groups + +
+ list + / elements=dictionary +
+
+ +
VRRP instance configuration groups.
+
+
+ address + +
+ list + / elements=string +
+
+ +
Virtual router IP addresses.
+
+
+ advertise_interval + +
+ integer +
+
+ +
VRRP advertisement interval.
+
+
+ authentication + +
+ dictionary +
+
+ +
VRRP group authentication options.
+
+
+ password + +
+ string +
+
+ +
Authentication password.
+
+
+ type + +
+ string +
+
+ +
Authentication type.
+
+
+ description + +
+ string +
+
+ +
Text description for the VRRP group.
+
+
+ disable + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Disable this VRRP group.
+
+
+ excluded_address + +
+ list + / elements=string +
+
+ +
IP address excluded from source checks.
+
+
+ garp + +
+ dictionary +
+
+ +
GARP-specific settings for this group.
+
+
+ interval + +
+ integer +
+
+ +
GARP interval.
+
+
+ master_delay + +
+ integer +
+
+ +
GARP master delay.
+
+
+ master_refresh + +
+ integer +
+
+ +
GARP master refresh interval.
+
+
+ master_refresh_repeat + +
+ integer +
+
+ +
Repeated refresh sends.
+
+
+ master_repeat + +
+ integer +
+
+ +
GARP repeat count.
+
+
+ health_check + +
+ dictionary +
+
+ +
VRRP group health check options.
+
+
+ failure_count + +
+ integer +
+
+ +
Allowed number of failed checks.
+
+
+ interval + +
+ integer +
+
+ +
Health check interval.
+
+
+ ping + +
+ string +
+
+ +
Host to ping for checks.
+
+
+ script + +
+ string +
+
+ +
Script to execute for health checking.
+
+
+ hello_source_address + +
+ string +
+
+ +
Source address for VRRP hello packets.
+
+
+ interface + +
+ string +
+
+ +
Interface used by the VRRP group.
+
+
+ name + +
+ string + / required +
+
+ +
VRRP group name.
+
+
+ no_preempt + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Disable preemption.
+
+
+ peer_address + +
+ string +
+
+ +
Peer VRRP router address.
+
+
+ preempt_delay + +
+ integer +
+
+ +
Delay before taking master role.
+
+
+ priority + +
+ integer +
+
+ +
VRRP priority (higher = preferred master).
+
+
+ rfc3768_compatibility + +
+ boolean +
+
+
    Choices: +
  • no ←
  • +
  • yes
  • +
+
+
Enable or disable RFC3768 compatibility mode.
+
+
+ track + +
+ dictionary +
+
+ +
Track interface and VRRP behaviour.
+
+
+ exclude_vrrp_interface + +
+ boolean +
+
+
    Choices: +
  • no
  • +
  • yes
  • +
+
+
Exclude VRRP interface from tracking.
+
+
+ interface + +
+ list + / elements=string +
+
+ +
Interface to track.
+
+
+ transition_script + +
+ dictionary +
+
+ +
Scripts executed during VRRP state transitions.
+
+
+ backup + +
+ string +
+
+ +
Path to backup script.
+
+
+ fault + +
+ string +
+
+ +
Path to fault script.
+
+
+ master + +
+ string +
+
+ +
Path to master script.
+
+
+ stop + +
+ string +
+
+ +
Path to stop script.
+
+
+ vrid + +
+ integer +
+
+ +
VRRP Virtual Router ID.
+
+
+ snmp + +
+ string +
+
+
    Choices: +
  • enabled
  • +
  • disabled
  • +
+
+
Enable SNMP support for VRRP.
+
+
+ sync_groups + +
+ list + / elements=dictionary +
+
+ +
VRRP sync-groups for coordinated failover.
+
+
+ health_check + +
+ dictionary +
+
+ +
Health check options for sync group.
+
+
+ failure_count + +
+ integer +
+
+ +
Allowed number of failures.
+
+
+ interval + +
+ integer +
+
+ +
Health check interval.
+
+
+ ping + +
+ string +
+
+ +
Host to ping.
+
+
+ script + +
+ string +
+
+ +
Script to run for health checking.
+
+
+ member + +
+ list + / elements=string +
+
+ +
List of VRRP groups participating in this sync group.
+
+
+ name + +
+ string + / required +
+
+ +
Sync-group name.
+
+
+ transition_script + +
+ dictionary +
+
+ +
Transition scripts for sync group events.
+
+
+ backup + +
+ string +
+
+ +
Backup state script.
+
+
+ fault + +
+ string +
+
+ +
Fault state script.
+
+
+ master + +
+ string +
+
+ +
Master state script.
+
+
+ stop + +
+ string +
+
+ +
Stop state script.
+
+
+ running_config + +
+ string +
+
+ +
Used only when state=parsed. Must contain the output of show configuration commands | grep high-availability.
+
+
+ state + +
+ string +
+
+
    Choices: +
  • deleted
  • +
  • merged ←
  • +
  • purged
  • +
  • replaced
  • +
  • gathered
  • +
  • rendered
  • +
  • parsed
  • +
  • overridden
  • +
+
+
Desired end state of the VRRP configuration.
+
+
+ + + + +Examples +-------- + +.. code-block:: yaml + + # Using merged + # Before state + + # vyos@vyos:~$ show configuration commands | match "set high-availability" + # vyos@vyos:~$ + + - name: Merge provided configuration with device configuration + vyos.vyos.vyos_ha: + config: + disable: true + virtual_servers: + - name: s1 + address: 10.10.10.5 + algorithm: round-robin + real_server: + - address: 10.10.50.2 + port: 8443 + - name: s2 + address: 10.10.10.2 + persistence_timeout: 30 + port: 81 + protocol: tcp + - name: s3 + address: 10.10.10.3 + port: 88 + protocol: udp + vrrp: + snmp: enabled + global_parameters: + startup_delay: 30 + garp: + master_repeat: 6 + groups: + - name: "g1" + peer_address: 192.168.1.3 + priority: 100 + disable: false + no_preempt: false + vrid: 20 + sync_groups: + - name: "sg1" + health_check: + failure_count: 5 + state: merged + + # After State + # vyos@vyos:~$ show configuration commands | match "set high-availability" + # set high-availability disable + # set high-availability virtual-server s1 address '10.10.10.5' + # set high-availability virtual-server s1 algorithm 'round-robin' + # set high-availability virtual-server s1 real-server 10.10.50.2 port '8443' + # set high-availability virtual-server s2 address '10.10.10.2' + # set high-availability virtual-server s2 persistence-timeout '30' + # set high-availability virtual-server s2 port '81' + # set high-availability virtual-server s2 protocol 'tcp' + # set high-availability virtual-server s3 address '10.10.10.3' + # set high-availability virtual-server s3 port '88' + # set high-availability virtual-server s3 protocol 'udp' + # set high-availability vrrp global-parameters garp master-repeat '6' + # set high-availability vrrp global-parameters startup-delay '30' + # set high-availability vrrp group g1 peer-address '192.168.1.3' + # set high-availability vrrp group g1 priority '100' + # set high-availability vrrp group g1 vrid '20' + # set high-availability vrrp snmp + # set high-availability vrrp sync-group sg1 health-check failure-count '5' + # vyos@vyos:~$ + # + # # Module Execution: + # + # "after": { + # "disable": true, + # "virtual_servers": [ + # { + # "address": "10.10.10.5", + # "algorithm": "round-robin", + # "name": "s1", + # "real_server": [ + # { + # "address": "10.10.50.2", + # "port": 8443 + # } + # ] + # }, + # { + # "address": "10.10.10.2", + # "name": "s2", + # "persistence_timeout": 30, + # "port": 81, + # "protocol": "tcp" + # }, + # { + # "address": "10.10.10.3", + # "name": "s3", + # "port": 88, + # "protocol": "udp" + # } + # ], + # "vrrp": { + # "global_parameters": { + # "garp": { + # "master_repeat": 6 + # }, + # "startup_delay": 30 + # }, + # "groups": [ + # { + # "disable": false, + # "name": "g1", + # "no_preempt": false, + # "peer_address": "192.168.1.3", + # "priority": 100, + # "rfc3768_compatibility": false, + # "vrid": 20 + # } + # ], + # "snmp": "enabled", + # "sync_groups": [ + # { + # "health_check": { + # "failure_count": 5 + # }, + # "name": "sg1" + # } + # ] + # } + # }, + # "before": { + # "disable": false + # }, + # "changed": true, + # "commands": [ + # "set high-availability disable", + # "set high-availability virtual-server s1 address 10.10.10.5", + # "set high-availability virtual-server s1 algorithm round-robin", + # "set high-availability virtual-server s1 real-server 10.10.50.2 port 8443", + # "set high-availability virtual-server s2 address 10.10.10.2", + # "set high-availability virtual-server s2 persistence-timeout 30", + # "set high-availability virtual-server s2 port 81", + # "set high-availability virtual-server s2 protocol tcp", + # "set high-availability virtual-server s3 address 10.10.10.3", + # "set high-availability virtual-server s3 port 88", + # "set high-availability virtual-server s3 protocol udp", + # "set high-availability vrrp global-parameters garp master-repeat 6", + # "set high-availability vrrp global-parameters startup-delay 30", + # "set high-availability vrrp group g1 peer-address 192.168.1.3", + # "set high-availability vrrp group g1 priority 100", + # "set high-availability vrrp group g1 vrid 20", + # "set high-availability vrrp snmp", + # "set high-availability vrrp sync-group sg1 health-check failure-count 5" + # ], + + # Using replaced: + # -------------- + + # Before state: + # vyos@vyos:~$ show configuration commands | match "set high-availability" + # set high-availability disable + # set high-availability virtual-server s1 address '10.10.10.5' + # set high-availability virtual-server s1 algorithm 'round-robin' + # set high-availability virtual-server s1 real-server 10.10.50.2 port '8443' + # set high-availability virtual-server s2 address '10.10.10.2' + # set high-availability virtual-server s2 persistence-timeout '30' + # set high-availability virtual-server s2 port '81' + # set high-availability virtual-server s2 protocol 'tcp' + # set high-availability virtual-server s3 address '10.10.10.3' + # set high-availability virtual-server s3 port '88' + # set high-availability virtual-server s3 protocol 'udp' + # set high-availability vrrp global-parameters garp master-repeat '6' + # set high-availability vrrp global-parameters startup-delay '30' + # set high-availability vrrp group g1 peer-address '192.168.1.3' + # set high-availability vrrp group g1 priority '100' + # set high-availability vrrp group g1 vrid '20' + # set high-availability vrrp snmp + # set high-availability vrrp sync-group sg1 health-check failure-count '5' + # vyos@vyos:~$ + + - name: Replace + vyos.vyos.vyos_ha: + config: + disable: false + virtual_servers: + - name: s1 + address: 10.10.10.3 + algorithm: round-robin + port: 8443 + real_server: + - address: 10.10.50.3 + port: 8443 + - name: s2 + address: 10.10.10.2 + persistence_timeout: 300 + port: 81 + protocol: tcp + real_server: + - address: 10.10.50.30 + port: 8443 + - name: s3 + address: 10.10.10.3 + port: 88 + protocol: udp + real_server: + - address: 10.10.50.6 + port: 8443 + vrrp: + snmp: enabled + global_parameters: + startup_delay: 30 + garp: + master_repeat: 6 + groups: + - name: "g1" + peer_address: 192.168.1.13 + priority: 100 + disable: false + no_preempt: true + interface: eth1 + address: 192.168.51.13 + vrid: 20 + sync_groups: + - name: "sg1" + health_check: + failure_count: 3 + state: replaced + + # After state: + + # vyos@vyos:~$ show configuration commands | match "set high-availability" + # set high-availability virtual-server s1 address '10.10.10.3' + # set high-availability virtual-server s1 algorithm 'round-robin' + # set high-availability virtual-server s1 port '8443' + # set high-availability virtual-server s1 real-server 10.10.50.2 port '8443' + # set high-availability virtual-server s1 real-server 10.10.50.3 port '8443' + # set high-availability virtual-server s2 address '10.10.10.2' + # set high-availability virtual-server s2 persistence-timeout '300' + # set high-availability virtual-server s2 port '81' + # set high-availability virtual-server s2 protocol 'tcp' + # set high-availability virtual-server s2 real-server 10.10.50.3 port '8443' + # set high-availability virtual-server s3 address '10.10.10.3' + # set high-availability virtual-server s3 port '88' + # set high-availability virtual-server s3 protocol 'udp' + # set high-availability virtual-server s3 real-server 10.10.50.6 port '8443' + # set high-availability vrrp global-parameters garp master-repeat '6' + # set high-availability vrrp global-parameters startup-delay '30' + # set high-availability vrrp group g1 address 192.168.51.13 + # set high-availability vrrp group g1 interface 'eth1' + # set high-availability vrrp group g1 no-preempt + # set high-availability vrrp group g1 peer-address '192.168.1.3' + # set high-availability vrrp group g1 peer-address '192.168.1.13' + # set high-availability vrrp group g1 priority '100' + # set high-availability vrrp group g1 vrid '20' + # set high-availability vrrp snmp + # set high-availability vrrp sync-group sg1 health-check failure-count '3' + # vyos@vyos:~$ + # + # + # Module Execution: + # + # "after": { + # "disable": false, + # "virtual_servers": [ + # { + # "address": "10.10.10.3", + # "algorithm": "round-robin", + # "name": "s1", + # "port": 8443, + # "real_server": [ + # { + # "address": "10.10.50.2", + # "port": 8443 + # }, + # { + # "address": "10.10.50.3", + # "port": 8443 + # } + # ] + # }, + # { + # "address": "10.10.10.2", + # "name": "s2", + # "persistence_timeout": 300, + # "port": 81, + # "protocol": "tcp", + # "real_server": [ + # { + # "address": "10.10.50.3", + # "port": 8443 + # } + # ] + # }, + # { + # "address": "10.10.10.3", + # "name": "s3", + # "port": 88, + # "protocol": "udp", + # "real_server": [ + # { + # "address": "10.10.50.6", + # "port": 8443 + # } + # ] + # } + # ], + # "vrrp": { + # "global_parameters": { + # "garp": { + # "master_repeat": 6 + # }, + # "startup_delay": 30 + # }, + # "groups": [ + # { + # "address": "192.168.51.13", + # "disable": false, + # "interface": "eth1", + # "name": "g1", + # "no_preempt": true, + # "peer_address": "192.168.1.13", + # "priority": 100, + # "rfc3768_compatibility": false, + # "vrid": 20 + # } + # ], + # "snmp": "enabled", + # "sync_groups": [ + # { + # "health_check": { + # "failure_count": 3 + # }, + # "name": "sg1" + # } + # ] + # } + # }, + # "before": { + # "disable": true, + # "virtual_servers": [ + # { + # "address": "10.10.10.5", + # "algorithm": "round-robin", + # "name": "s1", + # "real_server": [ + # { + # "address": "10.10.50.2", + # "port": 8443 + # } + # ] + # }, + # { + # "address": "10.10.10.2", + # "name": "s2", + # "persistence_timeout": 30, + # "port": 81, + # "protocol": "tcp" + # }, + # { + # "address": "10.10.10.3", + # "name": "s3", + # "port": 88, + # "protocol": "udp" + # } + # ], + # "vrrp": { + # "global_parameters": { + # "garp": { + # "master_repeat": 6 + # }, + # "startup_delay": 30 + # }, + # "groups": [ + # { + # "disable": false, + # "name": "g1", + # "no_preempt": false, + # "peer_address": "192.168.1.3", + # "priority": 100, + # "rfc3768_compatibility": false, + # "vrid": 20 + # } + # ], + # "snmp": "enabled", + # "sync_groups": [ + # { + # "health_check": { + # "failure_count": 5 + # }, + # "name": "sg1" + # } + # ] + # } + # }, + # "changed": true, + # "commands": [ + # "delete high-availability disable", + # "set high-availability virtual-server s1 address 10.10.10.3", + # "set high-availability virtual-server s1 port 8443", + # "set high-availability virtual-server s1 real-server 10.10.50.3 port 8443", + # "set high-availability virtual-server s2 persistence-timeout 300", + # "set high-availability virtual-server s2 real-server 10.10.50.3 port 8443", + # "set high-availability virtual-server s3 real-server 10.10.50.6 port 8443", + # "set high-availability vrrp group g1 address 192.168.51.13", + # "set high-availability vrrp group g1 interface eth1", + # "set high-availability vrrp group g1 no-preempt", + # "set high-availability vrrp group g1 peer-address 192.168.1.13", + # "set high-availability vrrp sync-group sg1 health-check failure-count 3" + # ], + + # Using deleted: + # ------------- + + # Before state: + + # vyos@vyos:~$ show configuration commands | match "set high-availability" + # set high-availability disable + # set high-availability virtual-server s1 address '10.10.10.5' + # set high-availability virtual-server s1 algorithm 'round-robin' + # set high-availability virtual-server s1 real-server 10.10.50.2 port '8443' + # set high-availability virtual-server s2 address '10.10.10.2' + # set high-availability virtual-server s2 persistence-timeout '30' + # set high-availability virtual-server s2 port '81' + # set high-availability virtual-server s2 protocol 'tcp' + # set high-availability virtual-server s3 address '10.10.10.3' + # set high-availability virtual-server s3 port '88' + # set high-availability virtual-server s3 protocol 'udp' + # set high-availability vrrp global-parameters garp master-repeat '6' + # set high-availability vrrp global-parameters startup-delay '30' + # set high-availability vrrp group g1 peer-address '192.168.1.3' + # set high-availability vrrp group g1 priority '100' + # set high-availability vrrp group g1 vrid '20' + # set high-availability vrrp snmp + # set high-availability vrrp sync-group sg1 health-check failure-count '5' + # vyos@vyos:~$ + + - name: Delete configuration + vyos.vyos.vyos_ha: + config: + disable: false + vrrp: + snmp: disabled + global_parameters: + startup_delay: 32 + version: 3 + virtual_servers: + - name: 's1' + address: '10.10.10.1' + algorithm: 'round-robin' + delay_loop: 60 + forward_method: 'direct' + persistence_timeout: 30 + port: 443 + protocol: 'tcp' + real_server: + - address: '10.10.10.1' + connection_timeout: 61 + port: 443 + state: deleted + + # After state: + + # vyos@vyos:~$ show configuration commands | match "set high-availability" + # set high-availability disable + # set high-availability virtual-server s2 address '10.10.10.2' + # set high-availability virtual-server s2 persistence-timeout '30' + # set high-availability virtual-server s2 port '81' + # set high-availability virtual-server s2 protocol 'tcp' + # set high-availability virtual-server s3 address '10.10.10.3' + # set high-availability virtual-server s3 port '88' + # set high-availability virtual-server s3 protocol 'udp' + # set high-availability vrrp global-parameters garp master-repeat '6' + # set high-availability vrrp group g1 peer-address '192.168.1.3' + # set high-availability vrrp group g1 priority '100' + # set high-availability vrrp group g1 vrid '20' + # set high-availability vrrp snmp + # set high-availability vrrp sync-group sg1 health-check failure-count '5' + + # vyos@vyos:~$ + # + # + # Module Execution: + # + # "after": { + # "disable": true, + # "virtual_servers": [ + # { + # "address": "10.10.10.2", + # "name": "s2", + # "persistence_timeout": 30, + # "port": 81, + # "protocol": "tcp" + # }, + # { + # "address": "10.10.10.3", + # "name": "s3", + # "port": 88, + # "protocol": "udp" + # } + # ], + # "vrrp": { + # "global_parameters": { + # "garp": { + # "master_repeat": 6 + # } + # }, + # "groups": [ + # { + # "disable": false, + # "name": "g1", + # "no_preempt": false, + # "peer_address": "192.168.1.3", + # "priority": 100, + # "rfc3768_compatibility": false, + # "vrid": 20 + # } + # ], + # "snmp": "enabled", + # "sync_groups": [ + # { + # "health_check": { + # "failure_count": 5 + # }, + # "name": "sg1" + # } + # ] + # } + # }, + # "before": { + # "disable": true, + # "virtual_servers": [ + # { + # "address": "10.10.10.5", + # "algorithm": "round-robin", + # "name": "s1", + # "real_server": [ + # { + # "address": "10.10.50.2", + # "port": 8443 + # } + # ] + # }, + # { + # "address": "10.10.10.2", + # "name": "s2", + # "persistence_timeout": 30, + # "port": 81, + # "protocol": "tcp" + # }, + # { + # "address": "10.10.10.3", + # "name": "s3", + # "port": 88, + # "protocol": "udp" + # } + # ], + # "vrrp": { + # "global_parameters": { + # "garp": { + # "master_repeat": 6 + # }, + # "startup_delay": 30 + # }, + # "groups": [ + # { + # "disable": false, + # "name": "g1", + # "no_preempt": false, + # "peer_address": "192.168.1.3", + # "priority": 100, + # "rfc3768_compatibility": false, + # "vrid": 20 + # } + # ], + # "snmp": "enabled", + # "sync_groups": [ + # { + # "health_check": { + # "failure_count": 5 + # }, + # "name": "sg1" + # } + # ] + # } + # }, + # "changed": true, + # "commands": [ + # "delete high-availability virtual-server s1", + # "delete high-availability vrrp global-parameters startup-delay" + # ], + + # Using purged: + + # Before state: + + # vyos@vyos:~$ show configuration commands | match "set high-availability" + # set high-availability disable + # set high-availability virtual-server s2 address '10.10.10.2' + # set high-availability virtual-server s2 persistence-timeout '30' + # set high-availability virtual-server s2 port '81' + # set high-availability virtual-server s2 protocol 'tcp' + # set high-availability virtual-server s3 address '10.10.10.3' + # set high-availability virtual-server s3 port '88' + # set high-availability virtual-server s3 protocol 'udp' + # set high-availability vrrp global-parameters garp master-repeat '6' + # set high-availability vrrp group g1 peer-address '192.168.1.3' + # set high-availability vrrp group g1 priority '100' + # set high-availability vrrp group g1 vrid '20' + # set high-availability vrrp snmp + # set high-availability vrrp sync-group sg1 health-check failure-count '5' + # vyos@vyos:~$ + + + - name: Purge configuration + vyos.vyos.vyos_ha: + config: + state: purged + + # After state: + + # vyos@vyos:~$ show configuration commands | match "set high-availability" + # vyos@vyos:~$ + # + # Module Execution: + # + # "after": { + # "disable": false + # }, + # "before": { + # "disable": true, + # "virtual_servers": [ + # { + # "address": "10.10.10.2", + # "name": "s2", + # "persistence_timeout": 30, + # "port": 81, + # "protocol": "tcp" + # }, + # { + # "address": "10.10.10.3", + # "name": "s3", + # "port": 88, + # "protocol": "udp" + # } + # ], + # "vrrp": { + # "global_parameters": { + # "garp": { + # "master_repeat": 6 + # } + # }, + # "groups": [ + # { + # "disable": false, + # "name": "g1", + # "no_preempt": false, + # "peer_address": "192.168.1.3", + # "priority": 100, + # "rfc3768_compatibility": false, + # "vrid": 20 + # } + # ], + # "snmp": "enabled", + # "sync_groups": [ + # { + # "health_check": { + # "failure_count": 5 + # }, + # "name": "sg1" + # } + # ] + # } + # }, + # "changed": true, + # "commands": [ + # "delete high-availability" + # ], + + + # using gathered: + # -------------- + + # Before state: + # vyos@vyos:~$ + # show configuration commands | match "set high-availability" + # set high-availability disable + # set high-availability virtual-server s1 address '10.10.10.5' + # set high-availability virtual-server s1 algorithm 'round-robin' + # set high-availability virtual-server s1 real-server 10.10.50.2 port '8443' + # set high-availability virtual-server s2 address '10.10.10.2' + # set high-availability virtual-server s2 persistence-timeout '30' + # set high-availability virtual-server s2 port '81' + # set high-availability virtual-server s2 protocol 'tcp' + # set high-availability virtual-server s3 address '10.10.10.3' + # set high-availability virtual-server s3 port '88' + # set high-availability virtual-server s3 protocol 'udp' + # set high-availability vrrp global-parameters garp master-repeat '6' + # set high-availability vrrp global-parameters startup-delay '30' + # set high-availability vrrp group g1 peer-address '192.168.1.3' + # set high-availability vrrp group g1 priority '100' + # set high-availability vrrp group g1 vrid '20' + # set high-availability vrrp snmp + # set high-availability vrrp sync-group sg1 health-check failure-count '5' + # vyos@vyos:~$ + + - name: gather configs + vyos.vyos.vyos_ha: + state: gathered + + # Module Execution: + # "changed": false, + # "gathered": { + # "disable": true, + # "virtual_servers": [ + # { + # "address": "10.10.10.5", + # "algorithm": "round-robin", + # "name": "s1", + # "real_server": [ + # { + # "address": "10.10.50.2", + # "port": 8443 + # } + # ] + # }, + # { + # "address": "10.10.10.2", + # "name": "s2", + # "persistence_timeout": 30, + # "port": 81, + # "protocol": "tcp" + # }, + # { + # "address": "10.10.10.3", + # "name": "s3", + # "port": 88, + # "protocol": "udp" + # } + # ], + # "vrrp": { + # "global_parameters": { + # "garp": { + # "master_repeat": 6 + # }, + # "startup_delay": 30 + # }, + # "groups": [ + # { + # "disable": false, + # "name": "g1", + # "no_preempt": false, + # "peer_address": "192.168.1.3", + # "priority": 100, + # "rfc3768_compatibility": false, + # "vrid": 20 + # } + # ], + # "snmp": "enabled", + # "sync_groups": [ + # { + # "health_check": { + # "failure_count": 5 + # }, + # "name": "sg1" + # } + # ] + # } + # }, + # + + # Using parsed: + # ------------ + + # parsed.cfg + # set high-availability vrrp group g1 interface eth2 + # set high-availability vrrp group g1 address 1.1.1.1 + # set high-availability vrrp group g1 disable + # set high-availability vrrp group g1 no-preempt + # set high-availability vrrp group g1 advertise-interval 10 + # set high-availability vrrp group g1 peer-address 2.2.2.2 + # set high-availability vrrp group g1 rfc3768-compatibility + # set high-availability vrrp group g1 vrid 20 + + - name: parse configs + vyos.vyos.vyos_ha: + running_config: "{{ lookup('file', './parsed.cfg') }}" + state: parsed + + # Module execution: + # "parsed": { + # "disable": false, + # "vrrp": { + # "groups": [ + # { + # "address": "1.1.1.1", + # "advertise_interval": 10, + # "disable": true, + # "interface": "eth2", + # "name": "g1", + # "no_preempt": true, + # "peer_address": "2.2.2.2", + # "rfc3768_compatibility": true, + # "vrid": 20 + # } + # ] + # } + # } + # + + # Using rendered: + # -------------- + + - name: Render + vyos.vyos.vyos_ha: + config: + disable: true + vrrp: + snmp: enabled + global_parameters: + startup_delay: 32 + version: 3 + garp: + interval: 30 + master_delay: 11 + master_refresh: 100 + master_refresh_repeat: 200 + master_repeat: 5 + state: rendered + + # Module Execution: + # "rendered": [ + # "set high-availability disable", + # "set high-availability vrrp global-parameters garp interval 30", + # "set high-availability vrrp global-parameters garp master-delay 11", + # "set high-availability vrrp global-parameters garp master-refresh 100", + # "set high-availability vrrp global-parameters garp master-refresh-repeat 200", + # "set high-availability vrrp global-parameters garp master-repeat 5", + # "set high-availability vrrp global-parameters startup-delay 32", + # "set high-availability vrrp global-parameters version 3", + # "set high-availability vrrp snmp" + # ] + + + +Return Values +------------- +Common return values are documented `here `_, the following are the fields unique to this module: + +.. raw:: html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyReturnedDescription
+
+ after + +
+ dictionary +
+
when changed +
The resulting configuration after module execution.
+
+
Sample:
+
This output will always be in the same format as the module argspec.
+
+
+ before + +
+ dictionary +
+
when state is merged, replaced, overridden, deleted or purged +
The configuration prior to the module execution.
+
+
Sample:
+
This output will always be in the same format as the module argspec.
+
+
+ commands + +
+ list +
+
when state is merged, replaced, overridden, deleted or purged +
The set of commands pushed to the remote device.
+
+
Sample:
+
["set high-availability vrrp group g1 address '1.1.1.1'", "set high-availability vrrp group g1 advertise-interval '10'", "set high-availability vrrp group g1 description 'Group 1'"]
+
+
+ gathered + +
+ list +
+
when state is gathered +
Facts about the network resource gathered from the remote device as structured data.
+
+
Sample:
+
This output will always be in the same format as the module argspec.
+
+
+ parsed + +
+ list +
+
when state is parsed +
The device native config provided in running_config option parsed into structured data as per module argspec.
+
+
Sample:
+
This output will always be in the same format as the module argspec.
+
+
+ rendered + +
+ list +
+
when state is rendered +
The provided configuration in the task rendered in device-native format (offline).
+
+
Sample:
+
["set high-availability vrrp global-parameters garp master-delay '10'", "set high-availability vrrp global-parameters garp master-refresh '100'", "set high-availability vrrp global-parameters garp master-refresh-repeat '200'"]
+
+

+ + +Status +------ + + +Authors +~~~~~~~ + +- Evgeny Molotkov (@omnom62) -- cgit v1.2.3