VELOS Ansible Collection

The VELOS platform is the next generation of F5’s industry-leading chassis-based systems, which deliver unprecedented performance and scalability in a single Application Delivery Controller (ADC).

VELOS relies on a Kubernetes-based platform layer (F5OS) that is tightly integrated with F5’s Traffic Management Operating System (TMOS) software, aligning with your modern architecture plans. This new microservices platform layer powers the next-generation of BIG-IP software, BIG-IP Next, which is built to offer greater automatability, scalability, and ease-of-use for organizations running applications on-premises, in the cloud, or at the edge.

F5 Ansible declarative collection for VELOS helps in automating configuration and interaction with various services provided by VELOS platform .

For more information, see F5 VELOS and VELOS Overview.

Version compatibility matrix

These BIG-IP versions are supported in these Ansible versions.

VELOS F5OS F5 Ansible Declarative Collection
1.3.1 >= 1.7.0

Supported Modules

F5 Ansible declarative collection 1.7.0 currently support the following modules for VELOS platform.

Configurations

Module Name Description
velos_partition_image Upload/copy partition image on VELOS chassis
velos_partition Manage partitions on the VELOS chassis
velos_partition_wait Waits for the specified timeout value for the partition to match the desired state
velos_partition_change_password Manage password of a particular user on a partition
velos_partition_interface Configure properties related to physical interfaces on a partition *
velos_partition_lag Manage LAG interfaces - trunk/native vlans and physical interfaces to the LAG interfaces
velos_partition_vlan Manage VLANs on partitions
velos_tenant_image Manage tenant images on a partition
velos_tenant Manage VELOS tenant configuration
velos_tenant_wait Waits for a tenant to be in a desired running state

* This module should be used with partitions that have existing physical interfaces.


Using the VELOS collection

This example demonstrates deploying SSLO topology using both imperative (f5_modules) and declarative (f5_bigip).

This example demonstrates using the F5 Ansible collection to configure and deploy images in the VELOS platform.

Specifically:

  • Create a partition
  • Change a password on a partition
  • Configure the partition

Example velos_example.yaml

---
- name: Create Partition
  connection: httpapi
  hosts: velos-controller[0]
  collections:
    - f5networks.f5_bigip
  any_errors_fatal: true

vars:
    ansible_user: "admin"
    ansible_httpapi_password: "password"   # VELOS Controller Password
    ansible_network_os: "f5networks.f5_bigip.velos"
    ansible_httpapi_use_ssl: true
    ansible_httpapi_use_proxy: false
    ansible_httpapi_validate_certs: "no"
    ansible_httpapi_port: 8888
    ansible_command_timeout: 1800
    persistent_log_messages: true
    partition_name: DemoPartition

tasks:
    - name: Create DEMO partition in running state
      velos_partition:
        name: "{{ partition_name }}"
        os_version: 1.3.1-5968
        ipv4_mgmt_address: 10.144.140.116/24
        ipv4_mgmt_gateway: 10.144.140.254
        slots: [2]
        state: enabled

    - name: Wait a maximum of 900 seconds for partition to reach running state.
      velos_partition_wait:
        name: "{{ partition_name }}"
        state: running
        timeout: 900

- name: Change Password on Partition
  connection: httpapi
  hosts: velos-partition[0]
  collections:
    - f5networks.f5_bigip
  any_errors_fatal: true

vars:
    ansible_user: "admin"
    ansible_httpapi_password: "admin" # This is the default password for admin user on a partition
    ansible_network_os: "f5networks.f5_bigip.velos"
    ansible_httpapi_use_ssl: true
    ansible_httpapi_use_proxy: false
    ansible_httpapi_validate_certs: "no"
    ansible_httpapi_port: 8888
    ansible_command_timeout: 1800
    persistent_log_messages: true

tasks:
    - name: pause for 30 seconds
      pause:
        seconds: 30

    - name: Change password on Demo partition
      velos_partition_change_password:
        user_name: "admin"
        old_password: "old_password" # for the very first time this will probably be admin
        new_password: "new_password"


- name: Configure Partition
  connection: httpapi
  hosts: velos-partition[0]
  collections:
    - f5networks.f5_bigip
  any_errors_fatal: true

tasks:
    - name: Attach Trunk-vlans to LAG to interface
      velos_partition_lag:
        name: "Olive"
        trunk_vlans: [1,2]
        state: present
        config_members:
        - '2/1.0'

    - name: Create multiple vlans on Demo partition
      velos_partition_vlan:
        name: "{{ item.name }}"
        vlan_id: "{{ item.id }}"
      with_items:
        - { name: 'Arista', id: '3' }
        - { name: 'Candor', id: '4' }

    - name: Associate VLANS with Interfaces
      velos_partition_interface:
        name: "2/2.0"
        trunk_vlans: [1,3]

    - name: Import tenant image onto the Velos partition
      velos_tenant_image:
        image_name: "{{ image_name_1 }}"
        remote_host: "{{ server }}"
        remote_user: "{{ server_user }}"
        remote_password: "{{ server_pass }}"
        remote_path: "{{ image_path }}"
        protocol: "https"
        state: import

    - name: Check the status of the image import
      velos_tenant_image:
        image_name: "{{ image_name_1 }}"
        timeout: 600
        state: present

    - name: Create DEMO tenant in running state
      velos_tenant:
        name: "{{ tenant_1 }}"
        image_name: "{{ image_name_1 }}"
        nodes: "{{ nodes_2 }}"
        mgmt_ip: "{{ mgmt_ip_2 }}"
        mgmt_prefix: 24
        mgmt_gateway: "{{ mgmt_gw }}"
        vlans: "{{ vlans_1 }}"
        cpu_cores: "{{ cpu_2 }}"
        memory: "{{ mem_2 }}"
        running_state: "{{ state_2 }}"

    - name: Wait a maximum of 600 seconds for tenant to reach running state.
      velos_tenant_wait:
        name: "{{ tenant_1 }}"
        state: "{{ state_2 }}"
        timeout: 600

The vars.yaml shows the configuration options we use in the velos_example.yaml file.

---
tenant_1: tenant1
image_name_1: "BIGIP-15.1.5-0.0.10.ALL-F5OS.qcow2.zip.bundle"
nodes_2: 2
mgmt_ip_2: <-IP-ADDR->
mgmt_gw: <-IP-ADDR->
state_2: deployed
mem_2: 12096
cpu_2: 2
vlans_1: [1]
image_path: "/v15.1.5/daily/build10.0/VM/"
server_user: "root"
server_pass: "XXXXXXXXX"
server: "example.f5velos.com"
...