Last updated on: 2024-01-16 03:25:50.

Porting Guides - Breaking Changes

These porting guides are meant for modules where deprecations caused breaking changes. The guides are in the form of playbook examples to allow for users to adjust their playbooks accordingly.

Module: bigip_log_destination

Removed Parameters:
  • syslog_settings
  • pool_settings

Old Style Playbook:

---

- name: Create a remote high speed logging destination
  bigip_log_destination:
    name: hsl1
    type: remote-high-speed-log
    pool_settings:
      pool: pool1

- name: Create a remote syslog destination
  bigip_log_destination:
    name: log1
    type: remote-syslog
    syslog_settings:
      syslog_format: syslog
      forward_to: hsl1

- name: Change protocol, udp
  bigip_log_destination:
    name: hsl1
    type: remote-high-speed-log
    pool_settings:
      protocol: udp

- name: Change distribution, balanced
  bigip_log_destination:
    name: hsl1
    type: remote-high-speed-log
    pool_settings:
      distribution: balanced

New Style Playbook:

---

- name: Create a remote high speed logging destination
  bigip_log_destination:
    name: hsl1
    type: remote-high-speed-log
    pool: pool1

- name: Create a remote syslog destination
  bigip_log_destination:
    name: log1
    type: remote-syslog
    syslog_format: syslog
    forward_to: hsl1

- name: Change protocol, udp
  bigip_log_destination:
    name: hsl1
    type: remote-high-speed-log
    protocol: udp

- name: Change distribution, balanced
  bigip_log_destination:
    name: hsl1
    type: remote-high-speed-log
    distribution: balanced

Module: bigip_node

Removed Parameters:
  • quorum
  • monitor_type

Old Style Playbook:

---

- name: Create node with multiple monitors
  bigip_node:
    state: present
    name: test_node
    fqdn: foo.monitor.com
    monitors:
      - icmp
      - tcp_echo
    monitor_type: m_of_n
    quorum: 1

- name: Modify node with multiple monitors
  bigip_node:
    state: present
    name: test_node
    fqdn: foo.monitor.com
    monitors:
      - icmp
      - tcp_echo
    monitor_type: and_list

- name: Change node to single monitor
  bigip_node:
    state: present
    name: test_node
    monitors:
      - icmp
    monitor_type: single

New Style Playbook:

---

- name: Create node with multiple monitors
  bigip_node:
    state: present
    name: test_node
    fqdn: foo.monitor.com
    monitors:
      - icmp
      - tcp_echo
    availability_requirements:
      type: at_least
      at_least: 1

- name: Modify node with multiple monitors
  bigip_node:
    state: present
    name: test_node
    monitors:
      - icmp
      - tcp_echo
    availability_requirements:
      type: all

- name: Change node to single monitor
  bigip_node:
    state: present
    name: test_node
    monitors:
      - icmp

Module: bigip_config

This module has been changed in f5_bigip collection to work asynchronously and use appropriate rest endpoints instead of tmsh commands. Due to this change, the module should allow execution by non admin accounts.

Old Style Playbook:

---

- name: Save the running configuration of the BIG-IP
  bigip_config:
    save: yes

- name: Reset the BIG-IP configuration, for example, to RMA the device
  bigip_config:
    reset: yes
    save: yes

- name: Load an SCF configuration
  bigip_config:
    merge_content: "{{ role_path }}/files/config.scf') }}"

New Style Playbook:

---
- name: Save the running configuration of the BIG-IP
  bigip_config:
    save: yes
  register: task

- name: Check for task completion
  bigip_config:
    task_id: "{{ task.task_id }}"
    timeout: 150

- name: Reset the BIG-IP configuration, for example, to RMA the device
  bigip_config:
    reset: yes
  register: task

- name: Change connection password after config was reset
  set_fact:
    ansible_httpapi_password: "default"

- name: Check for reset task completion
  bigip_config:
    task_id: "{{ task.task_id }}"
    timeout: 150

- name: Save the running configuration of the BIG-IP after reset
  bigip_config:
    save: yes
  register: task

- name: Check for save config task completion after reset
  bigip_config:
    task_id: "{{ task.task_id }}"
    timeout: 150

- name: Load an SCF configuration
  bigip_config:
    merge_content: "{{ role_path }}/files/config.scf') }}"
  register: task

- name: Check for merge config task completion
  bigip_config:
    task_id: "{{ task.task_id }}"
    timeout: 150

- name: Verify an SCF configuration merge validity
  bigip_config:
    merge_content: "{{ role_path }}/files/config.scf') }}"
    validate: true

Module: bigip_ucs_fetch

This module has been changed in f5_bigip collection to work asynchronously.

Old Style Playbook:

---

- name: Download a new UCS
  bigip_ucs_fetch:
    src: cs_backup.ucs
    dest: /tmp/cs_backup.ucs

New Style Playbook:

---

- name: Create a new UCS
  bigip_ucs_fetch:
    dest: /tmp/cs_backup.ucs
  register: task

- name: Check for task completion and download created UCS
  bigip_ucs_fetch:
    dest: /tmp/cs_backup.ucs
    src: "{{ task.src }}"
    task_id: "{{ task.task_id }}"
    timeout: 300

Module: bigip_ucs

This module has been changed in f5_bigip collection to work asynchronously when installing UCS.

Old Style Playbook:

---

- name: Install a new UCS
  bigip_ucs:
    ucs: cs_backup.ucs
    state: installed

New Style Playbook:

---

- name: Install a new UCS
  bigip_ucs:
    ucs: cs_backup.ucs
    state: installed
  register: task

- name: Check for installation status of a UCS
  bigip_ucs:
    ucs: "{{ task.ucs }}"
    task_id: "{{ task.task_id }}"
    timeout: 300

Module: all velos modules in f5_bigip collection

This modules have been moved to f5os collection to bring all F5OS related modules under a single banner. All of the the modules will work with existing playbooks with minor changes, see below example:

Old Style Playbook:

- hosts: all
  collections:
    - f5networks.f5_bigip
  connection: httpapi

  vars:
    ansible_host: "lb.mydomain.com"
    ansible_user: "admin"
    ansible_httpapi_password: "secret"
    ansible_network_os: f5networks.f5_bigip.velos
    ansible_httpapi_use_ssl: yes

  tasks:

    - name: Attach Trunk-vlans to LAG to interface
      velos_partition_lag:
        name: "Arista"
        trunk_vlans: [444]
        state: present

    - name: Modify Vlans to LAG interface
      velos_partition_lag:
        name: "Arista"
        trunk_vlans: [444,555]
        state: present

    - name: Delete LAG on interface
      velos_partition_lag:
        name: "Arista"
        trunk_vlans: [444,555]
        state: absent

New Style Playbook:

- hosts: all
  collections:
    - f5networks.f5os
  connection: httpapi

  vars:
    ansible_host: "lb.mydomain.com"
    ansible_user: "admin"
    ansible_httpapi_password: "secret"
    ansible_network_os: f5networks.f5os.f5os
    ansible_httpapi_use_ssl: yes

  tasks:
    - name: Attach Trunk-vlans to LAG to interface
      f5os_lag:
        name: "Arista"
        lag_type: "lacp"
        trunk_vlans: [444]
        state: present

    - name: Modify Vlans to LAG interface
      f5os_lag:
        name: "Arista"
        trunk_vlans: [444,555]
        state: present

    - name: Delete LAG interface
      f5os_lag:
        name: "Arista"
        trunk_vlans: [444,555]
        state: absent

It is worth keeping in mind due to introduction of F5OS rSeries support, there are some minor differences in parameter requirements in the following modules:

  • f5os_lag and f5os_interface - trunk_vlans and native_vlan parameters are no longer mutually exclusive.
  • f5os_vlan - name parameter is now required.