Template and sample YAML

Examples of a sample and template System_Name.yml file.

When creating or editing the yml file on your system, note that there must be only one .yml file apart from the template in the /opt/ibm/appliance/platform/apos-comms/customer_network_config/ansible directory, otherwise you might face issues when configuring the network.

Template YAML file

Versions 1.0.7.6 and later

Note: The switches section contains two mutually exclusive sections marked #BEGIN BGP (...) #END BGP and #BEGIN L2 (...) #END L2. Only one of these sections must be used. If you do not have the BGP feature configured, remove the BGP section together with the enclosing comments. For more information, see Switch settings.
all:
  children:
    control_nodes:
      hosts:
        node1:
          custom_hostname: <VALUE>
          management_network:
            network1:
              ip: <VALUE>
        node2:
          custom_hostname: <VALUE>
          management_network:
            network1:
              ip: <VALUE>
        node3:
          custom_hostname: <VALUE>
          management_network:
            network1:
              ip: <VALUE>
    switches:
    #BEGIN BGP
      vars:
        cp4d_asplain: <VALUE>
        cp4d_network: <VALUE>
        cp4d_network_vip: <VALUE>
      hosts:
        FabSw1a:
          ansible_host: localhost
          vrr_ip_addr: <VALUE>
          cp4d_routerID: 9.0.62.1
          isl_peer: 9.0.255.2
          bgp_links:
              link1:
              swp: <VALUE>
              neighbor: <VALUE>
              ip_addr: <VALUE>
              mtu: 9000
              link_speed: 10000
        FabSw1b:
          ansible_host: localhost
          vrr_ip_addr: <VALUE>
          cp4d_routerID: 9.0.62.2
          isl_peer: 9.0.255.1
          bgp_links:
            link1:
              swp: <VALUE>
              neighbor: <VALUE>
              ip_addr: <VALUE>
              mtu: 9000
              link_speed: 10000
    #END BGP

    #BEGIN L2
    switches:
      hosts:
        FabSw1a:
          ansible_host: localhost
          external_connection_config:
            external_link1:
              switch_ports: ['<VALUE>', '<VALUE>']
              port_config:
                mtu: 9000
                link_speed: 10000
              vlans: ['VALUE']
              strict_vlan: <VALUE>
              name: <VALUE>
              lacp_link: True
              lacp_rate: Fast
              clag_id: 100
              partner_switch: 'FabSw1b'
    #END L2

  vars:
    app_fqdn: <VALUE>
    #(pick from timedatectl list-timezones), default is EDT
    timezone: "<OPTIONAL>"
    #must begin with server or pool
    time_servers: ["<OPTIONAL>"]
    dns_servers: ["<VALUE>"]
    dns_search_strings: ["<OPTIONAL>"]
    smtp_servers: ["<OPTIONAL>"]
    management_network:
      network1:
        subnet: <VALUE>
        # just number, no slash 
        prefix: <VALUE>
        gateway: <VALUE>
        floating_ip: <VALUE>
        mtu: <OPTIONAL>
        custom_routes: <OPTIONAL>
    application_network_enabled: False
    application_network:
      network1:
        default_gateway: true
        vlan: <VALUE>
        # just number, no slash 
        prefix: <VALUE>
        gateway: <VALUE>
        floating_ip: <VALUE>
        mtu: <OPTIONAL>
        custom_routes: <OPTIONAL>

Versions 1.0.7.5 and earlier

Note: If the template you are editing is from a release older than 1.0.5.1, then it does not include the application_network_enabled line. When starting with an existing System_Name.yml file, this line must be added manually before the application_network line:
application_network_enabled: True/False
    application_network:

If you are only using Management connection (1G), the setting must be: application_network_enabled: False, and the application_network section must be blank.

If you have a standard network layout (Management plus Application), you should set application_network_enabled to True.

Note: If the template you are editing is from a release older than 1.0.7, then it does not include the switches section. When starting with an existing System_Name.yml file, this section must be added manually. Refer to Switch settings .
all:
  children:
    control_nodes:
      hosts:
        node1:
          custom_hostname: <VALUE>
          management_network:
            network1:
              ip: <VALUE>
        node2:
          custom_hostname: <VALUE>
          management_network:
            network1:
              ip: <VALUE>
        node3:
          custom_hostname: <VALUE>
          management_network:
            network1:
              ip: <VALUE>
    switches:
      hosts:
        FabSw1a:
          # Run on the control rather than remotely
          ansible_host: localhost

          # Is there an external link here at all?
          external_connection_enabled: False
          # If the above is True the following section is filled in
          external_connection_config:
            # First link config
            external_link1:
              # Ports to put in this link, a list of 'number', 'number'
              switch_ports: ['XX', 'YY']

              # same config for all the values in switch_ports
              port_config:
                mtu: 9000
                link_speed: 10000

              # Which VLANs arriving on this port (and crossing the bridge)
              vlans: ['VALUE']

              # True means we only accept tagged packets from external source
              # False means we only accept untagged packets from external source
              strict_vlan: true

              # Name of this link
              name: <VALUE>

              # True indicates there is multiple links in this connection
              lacp_link: True

              # LACP Refresh rate. (Fast or Slow)
              lacp_rate: Fast

              # CLAG Id for this link, 0 for no clag
              clag_id: 100

              # This switch should have matching cfg (and the same clag_id)
              # Use False for links only on a single switch
              partner_switch: 'FabSw1b'

  vars:
    app_fqdn: <VALUE>
    #(pick from timedatectl list-timezones), default is EDT
    timezone: "<OPTIONAL>"
    #must begin with server or pool
    time_servers: ["<OPTIONAL>"]
    dns_servers: ["<VALUE>"]
    dns_search_strings: ["<OPTIONAL>"]
    smtp_servers: ["<OPTIONAL>"]
    management_network:
      network1:
        subnet: <VALUE>
        # just number, no slash 
        prefix: <VALUE>
        gateway: <VALUE>
        floating_ip: <VALUE>
        mtu: <OPTIONAL>
        custom_routes: <OPTIONAL>
    application_network_enabled: True
    application_network:
      network1:
        default_gateway: true
        vlan: <VALUE>
        # just number, no slash 
        prefix: <VALUE>
        gateway: <VALUE>
        floating_ip: <VALUE>
        mtu: <OPTIONAL>
        custom_routes: <OPTIONAL>

Fully populated sample YAML

all:
  children:
    control_nodes:
      hosts:
        node1:
          custom_hostname: suyos01a.svl.ibm.com
          management_network:
            network1:
              ip: 9.30.16.141
        node2:
          custom_hostname: suyos01b.svl.ibm.com
          management_network:
            network1:
              ip: 9.30.16.142
        node3:
          custom_hostname: suyos01c.svl.ibm.com
          management_network:
            network1:
              ip: 9.30.16.143
    switches:
      hosts:
        FabSw1a:
          # Run on the control rather than remotely
          ansible_host: localhost
          # Is there an external link here at all?
          external_connection_enabled: True
          # If the above is True the follow section is filled in
          external_connection_config:
            # First link config
            external_link1:
              # Ports to put in this link, a list of 'number', 'number'
              switch_ports: ['48']
              # same config for all the values in switch_ports
              port_config:
                mtu: 9000
                link_speed: 10000
              # Which VLANs arriving on this port (and crossing the bridge)
              vlans: ['4080']
              # True means we only accept tagged packets from external source
              # False means we only accept untagged packets from external source
              strict_vlan: False
              # Name of this link
              name: h0
              # True indicates there is multiple links in this connection
              lacp_link: false
              # LACP Refresh rate. (Fast or Slow)
              lacp_rate: Fast
              # CLAG Id for this link, 0 for no clag
              clag_id: 0
              # This switch should have matching cfg (and the same clag_id)
              # Use False for links only on a single switch
              partner_switch: False
  vars:
    app_fqdn: suyos01.svl.ibm.com
    #(pick from timedatectl list-timezones)
    timezone: "America/Los_Angeles"
    #must begin with server or pool
    time_servers: ["<OPTIONAL>"]
    dns_servers: ["9.30.31.32"]
    management_network:
      network1:
        subnet: 9.30.16.128/25
        # just number, no slash
        prefix: 25
        gateway: 9.30.16.129
        floating_ip: 9.30.16.144
        mtu: 1500
        custom_routes:
    application_network_enabled: True
    application_network:
      network1:
        default_gateway: true
        vlan: 4080
        # just number, no slash
        prefix: 25
        gateway: 9.30.20.1
        floating_ip: 9.30.20.40
        mtu: 9000
        custom_routes: