Permalink
Fetching contributors…
Cannot retrieve contributors at this time
1057 lines (1010 sloc) 150 KB

Cluster Configuration File Specification

Specification Version: v2.0

Genesis of the OpenPOWER Cloud Reference Cluster is controlled by the 'config.yml' file. This file is stored in YAML format. The definition of the fields and the YAML file format are documented below.

Each section represents a top level dictionary key:

Additional key/value pairs are not processed by Cluster Genesis, but are copied into the inventory.yml file and made available to post-Genesis scripts and/or playbooks.

version:

Element Example(s) Description Required
version:
version: v2.0

Config file version.

Release Branch Supported Config File Version

release-2.x version: v2.0

release-1.x version: 1.1

release-0.9 version: 1.0

yes

globals:

globals:
    introspection:
    env_variables:
    switch_mode_mgmt:
    switch_mode_data:
    dhcp_lease_time:
Element Example(s) Description Required
globals:
   introspection:
   ...
introspection: true

Introspection shall be enabled. Evaluates to false if missing.

false
true
no
globals:
   env_variables:
   ...
env_variables:
    https_proxy: http://192.168.1.2:3128
    http_proxy: http://192.168.1.2:3128
    no_proxy: localhost,127.0.0.1

Apply environmental variables to the shell.

The example to the left would give the following result in bash:

export https_proxy="http://192.168.1.2:3128"
export http_proxy="http://192.168.1.2:3128"
export no_proxy="localhost,127.0.0.1"
no
globals:
   switch_mode_mgmt:
   ...
switch_mode_mgmt: active

Sets Cluster Genesis management switch mode. Evaluates to active if missing.

passive
active
no
globals:
   switch_mode_data:
   ...
switch_mode_data: active

Sets Cluster Genesis data switch mode. Evaluates to active if missing.

passive
active
no
globals:
   dhcp_lease_time:
   ...
dhcp_lease_time: 15m
dhcp_lease_time: 1h
Sets DHCP lease time given to client nodes. Value can be in seconds, minutes (e.g. "15m"), hours (e.g. "1h") or "infinite" (lease does not expire). no

location:

location:
    time_zone:
    data_center:
    racks:
        - label:
          room:
          row:
          cell:
Element Example(s) Description Required
location:
    time_zone:
    ...
time_zone: UTC
time_zone: America/Chicago
Cluster time zone in tz database format. no
location:
    data_center:
    ...
data_center: East Coast
data_center: Austin, TX
Data center name to be associated with cluster inventory. no
location:
    racks:
        - label:
          room:
          row:
          cell:
    ...
racks:
    - label: rack1
      room: lab41
      row: 5
      cell: B
    - label: rack2
      room: lab41
      row: 5
      cell: C

List of cluster racks.

Required keys:
label - Unique label used to reference this rack elsewhere in the config file.
Optional keys:
room - Physical room location of rack.
row - Physical row location of rack.
cell - Physical cell location of rack.
yes

deployer:

deployer:
    gateway:
    networks:
        mgmt:
            - device:
              interface_ipaddr:
              container_ipaddr:
              bridge_ipaddr:
              vlan:
              netmask:
              prefix:

        client:
            - type:
              device:
              container_ipaddr:
              bridge_ipaddr:
              vlan:
              netmask:
              prefix:
Element Example(s) Description Required
deployer:
   gateway:
   ...
gateway: true

Deployer shall act as cluster gateway. Evaluates to false if missing.

false
true

The deployer will be configured as the default gateway for all client nodes.

Configuration includes adding a 'MASQUERADE' rule to the deployer's 'iptables' NAT chain and setting the 'dnsmasq' DHCP service to serve the deployer's client management bridge address as the default gateway.

Note: Specifying the 'gateway' explicitly on any of the data networks will override
this behaviour.
no
deployer:
    networks:
        mgmt:
            - device:
              interface_ipaddr:
              container_ipaddr:
              bridge_ipaddr:
              vlan:
              netmask:
              prefix:
        ...
    ...
mgmt:
    - device: enp1s0f0
      interface_ipaddr: 192.168.1.2
      netmask: 255.255.255.0
    - device: enp1s0f0
      container_ipaddr: 192.168.5.2
      bridge_ipaddr: 192.168.5.3
      vlan: 5
      prefix: 24

Management network interface configuration.

Required keys:
device - Management network interface device.
Optional keys:
vlan - Management network vlan (tagged).
IP address must be defined with:
interface_ipaddr - Management interface IP address (non-tagged).
--- or ---
container_ipaddr - Container management interface IP address (tagged).
bridge_ipaddr - Deployer management bridge interface IP address (tagged).
Subnet mask must be defined with:
netmask - Management network bitmask.
--- or ---
prefix - Management network bit-length.
yes
deployer:
    networks:
        client:
            - type:
              device:
              container_ipaddr:
              bridge_ipaddr:
              vlan:
              netmask:
              prefix:
client:
    - type: ipmi
      device: enp1s0f0
      container_ipaddr: 192.168.10.2
      bridge_ipaddr: 192.168.10.3
      vlan: 10
      netmask: 255.255.255.0
    - type: pxe
      device: enp1s0f0
      container_ipaddr: 192.168.20.2
      bridge_ipaddr: 192.168.20.3
      vlan: 20
      prefix: 24

Client node BMC (IPMI) and OS (PXE) network interface configuration. Ansible communicates with clients using this network during "post deploy" operations.

Required keys:
type - IPMI or PXE network (ipmi/pxe).
device - Management network interface device.
container_ipaddr - Container management interface IP address.
bridge_ipaddr - Deployer management bridge interface IP address.
vlan - Management network vlan.
Subnet mask must be defined with:
netmask - Management network bitmask.
--- or ---
prefix - Management network bit-length.
yes

switches:

switches:
    mgmt:
        - label:
          hostname:
          userid:
          password:
          ssh_key:
          class:
          rack_id:
          rack_eia:
          interfaces:
              - type:
                ipaddr:
                vlan:
                port:
          links:
              - target:
                ipaddr:
                vip:
                netmask:
                prefix:
                ports:
    data:
        - label:
          hostname:
          userid:
          password:
          ssh_key:
          class:
          rack_id:
          rack_eia:
          interfaces:
              - type:
                ipaddr:
                vlan:
                port:
          links:
              - target:
                ipaddr:
                vip:
                netmask:
                prefix:
                ports:
Element Example(s) Description Required
switches:
    mgmt:
        - label:
          hostname:
          userid:
          password:
          class:
          rack_id:
          rack_eia:
          interfaces:
              - type:
                ipaddr:
                vlan:
                port:
          links:
              - target:
                ports:
    ...
mgmt:
    - label: mgmt_switch
      hostname: switch23423
      userid: admin
      password: abc123
      class: lenovo
      rack_id: rack1
      rack_eia: 20
      interfaces:
          - type: outband
            ipaddr: 192.168.1.10
            port: mgmt0
          - type: inband
            ipaddr: 192.168.5.20
            port: 15
      links:
          - target: deployer
            ports: 1
          - target: data_switch
            ports: 2

Management switch configuration. Each physical switch is defined as an item in the mgmt: list.

Required keys:
label - Unique label used to reference this switch elsewhere in the config file.
Required keys in "active" switch mode:
userid - Userid for switch management account.
password [1] - Plain text password associated with userid.
ssh_key [1] - Path to SSH private key file associated with userid.
Required keys in "passive" switch mode:
class - Switch class (lenovo/mellanox/cisco/cumulus).
Optional keys:
hostname - Hostname associated with switch management network interface.
rack_id - Reference to rack label defined in the locations: racks:= element.
rack_eia - Switch position within rack.
interfaces - See interfaces.
links - See links.
[1](1, 2) Either password or ssh_key shall be specified, but not both.
yes
switches:
    data:
        - label:
          hostname:
          userid:
          password:
          class:
          rack_id:
          rack_eia:
          interfaces:
              - type:
                ipaddr:
                vlan:
                port:
          links:
              - target:
                ports:
    ...

example #1:

data:
    - label: data_switch_1
      hostname: switch84579
      userid: admin
      password: abc123
      class: mellanox
      rack_id: rack1
      rack_eia: 21
      interfaces:
          - type: inband
            ipaddr: 192.168.1.21
            port: 15
      links:
          - target: mgmt_switch
            ports: 1
          - target: data_switch_2
            ports: 2

example #2:

data:
    - label: data_switch
      hostname: switch84579
      userid: admin
      password: abc123
      rack_id: rack1
      rack_eia: 21
      interfaces:
          - type: outband
            ipaddr: 192.168.1.21
            port: mgmt0
      links:
          - target: mgmt_switch
            ports: mgmt0
Data switch configuration. Each physical switch is defined as an item in the data: list. Key/value specs are identical to mgmt switches. yes
switches:
    mgmt:
        - ...
          interfaces:
              - type:
                ipaddr:
                port:
    data:
        - ...
          interfaces:
              - type:
                ipaddr:
                port:

example #1:

interfaces:
    - type: outband
      ipaddr: 192.168.1.20
      port: mgmt0

example #2:

interfaces:
    - type: inband
      ipaddr: 192.168.5.20
      netmask: 255.255.255.0
      port: 15

Switch interface configuration.

Required keys:
type - In-Band or Out-of-Band (inband/outband).
ipaddr - IP address.
Optional keys:
vlan - VLAN.
port - Port.
Subnet mask may be defined with:
netmask - Management network bitmask.
--- or ---
prefix - Management network bit-length.
no

example #1:

mgmt:
    - label: mgmt_switch
      ...
      interfaces:
          - type: inband
            ipaddr: 192.168.5.10
            port: 15
      links:
          - target: deployer
            ports: 10
          - target: data_switch
            ports: 11
data:
    - label: data_switch
      ...
      interfaces:
          - type: outband
            ipaddr: 192.168.5.10
            vlan: 5
            port: mgmt0
      links:
          - target: mgmt_switch
            ports: mgmt0

example #2:

data:
    - label: data_1
      ...
      links:
          - target: mgmt
            ipaddr: 192.168.5.31
            vip: 192.168.5.254
            ports: mgmt0
          - target: data_2
            ipaddr: 10.0.0.1
            netmask: 255.255.255.0
            vlan: 4000
            ports:
                - 7
                - 8
    - label: data_2
      links:
          - target: mgmt
            ipaddr: 192.168.5.32
            vip: 192.168.5.254
            ports: mgmt0
          - target: data_2
            ipaddr: 10.0.0.2
            network: 255.255.255.0
            vlan: 4000
            ports:
                - 7
                - 8

Switch link configuration. Links can be configured between any switches and/or the deployer.

Required keys:
target - Reference to destination target. This value must be set to 'deployer' or correspond to another switch's label (switches_mgmt, switches_data).
ports - Source port numbers (not target ports!). This can either be a single port or a list of ports. If a list is given then the links will be aggregated.
Optional keys:
ipaddr - Management interface IP address.
vlan - Management interface vlan.
vip - Virtual IP used for redundant switch configurations.
Subnet mask must be defined with:
netmask - Management network bitmask.
--- or ---
prefix - Management network bit-length.

In example #1 port 10 of "mgmt_switch" is cabled directly to the deployer and port 11 of "mgmt_switch" is cabled to the mangement port 0 of "data_switch". An inband management interface is configured with an IP address of '192.168.5.10' for "mgmt_switch", and the dedicated management port 0 of "data_switch" is configured with an IP address of "192.168.5.11" on vlan "5".

In example #2 a redundant data switch configuration is shown. Ports 7 and 8 (on both switches) are configured as an aggrated peer link on vlan "4000" with IP address of "10.0.0.1/24" and "10.0.0.2/24".

no

interfaces:

interfaces:
    - label:
      description:
      iface:
      method:
      address_list:
      netmask:
      broadcast:
      gateway:
      dns_search:
      dns_nameservers:
      mtu:
      pre_up:
      vlan_raw_device:
    - label:
      description:
      DEVICE:
      BOOTPROTO:
      ONBOOT
      ONPARENT
      MASTER
      SLAVE
      BONDING_MASTER
      IPADDR_list:
      NETMASK:
      BROADCAST:
      GATEWAY:
      SEARCH:
      DNS1:
      DNS2:
      MTU:
      VLAN:
Element Example(s) Description Required
interfaces:
    - ...
    - ...
  List of OS interface configuration definitions. Each definition can be formatted for either Ubuntu or RHEL. no
interfaces:
    - label:
      description:
      iface:
      method:
      address_list:
      netmask:
      broadcast:
      gateway:
      dns_search:
      dns_nameservers:
      mtu:
      pre_up:
      vlan_raw_device:
- label: manual1
  description: manual network 1
  iface: eth0
  method: manual

- label: dhcp1
  description: dhcp interface 1
  iface: eth0
  method: dhcp

- label: static1
  description: static interface 1
  iface: eth0
  method: static
  address_list:
      - 9.3.89.14
      - 9.3.89.18-9.3.89.22
      - 9.3.89.111-9.3.89.112
      - 9.3.89.120
  netmask: 255.255.255.0
  broadcast: 9.3.89.255
  gateway: 9.3.89.1
  dns_search: your.dns.com
  dns_nameservers: 9.3.1.200 9.3.1.201
  mtu: 9000
  pre_up: command

- label: vlan1
  description: vlan interface 1
  iface: eth0.10
  method: manual

- label: vlan2
  description: vlan interface 2
  iface: myvlan.20
  method: manual
  vlan_raw_device: eth0

- label: bridge1
  description: bridge interface 1
  iface: br1
  method: static
  address_start: 10.0.0.100
  netmask: 255.255.255.0
  bridge_ports: eth0
  bridge_fd: 9
  bridge_hello: 2
  bridge_maxage: 12
  bridge_stp: off

- label: bond1_interface0
  description: primary interface for bond 1
  iface: eth0
  method: manual
  bond_master: bond1
  bond_primary: eth0

- label: bond1_interface1
  description: secondary interface for bond 1
  iface: eth1
  method: manual
  bond_master: bond1

- label: bond1
  description: bond interface 1
  iface: bond1
  address_start: 192.168.1.10
  netmask: 255.255.255.0
  bond_mode: active-backup
  bond_miimon: 100
  bond_slaves: none

- label: osbond0_interface0
  description: primary interface for osbond0
  iface: eth0
  method: manual
  bond_master: osbond0
  bond_primary: eth0

- label: osbond0_interface1
  description: secondary interface for osbond0
  iface: eth1
  method: manual
  bond_master: osbond0

- label: osbond0
  description: bond interface
  iface: osbond0
  address_start: 192.168.1.10
  netmask: 255.255.255.0
  bond_mode: active-backup
  bond_miimon: 100
  bond_slaves: none

- label: osbond0_vlan10
  description: vlan interface 1
  iface: osbond0.10
  method: manual

- label: bridge10
  description: bridge interface for vlan10
  iface: br10
  method: static
  address_start: 10.0.10.100
  netmask: 255.255.255.0
  bridge_ports: osbond0.10
  bridge_stp: off

- label: osbond0_vlan20
  description: vlan interface 2
  iface: osbond0.20
  method: manual

- label: bridge20
  description: bridge interface for vlan20
  iface: br20
  method: static
  address_start: 10.0.20.100
  netmask: 255.255.255.0
  bridge_ports: osbond0.20
  bridge_stp: off

Ubuntu formatted OS interface configuration.

Required keys:
label - Unique label of interface configuration to be referenced within networks: node_templates: interfaces:.
Optional keys:
description - Short description of interface configuration to be included as a comment in OS config files.
address_list - List of IP address to assign client interfaces referencing this configuration. Each list element may either be a single IP address or a range (formatted as <start_address>-<end_address>).
address_start - Starting IP address to assign client interfaces referencing this configuration. Addresses will be assigned to each client interface incrementally.
Optional "drop-in" keys:
The following key names are derived directly from the Ubuntu interfaces configuration file (note that all "-" charactes are replaced with "_"). Values will be copied directly into the interfaces file. Refer to the interfaces manpage

iface
method
netmask
broadcast
gateway
dns_search
dns_nameservers
mtu
pre_up
vlan_raw_device
Notes:
If 'rename: true' in node_templates: physical_interfaces: pxe/data then the iface value will be used to rename the interface.

If 'rename: false' in node_templates: physical_interfaces: pxe/data then the iface value will be ignored and the interface name assigned by the OS will be used. If the iface value is referenced in any other interface definition it will also be replaced.
no
interfaces:
    - label:
      description:
      DEVICE:
      TYPE:
      BOOTPROTO:
      ONBOOT
      ONPARENT:
      MASTER:
      SLAVE:
      BONDING_MASTER:
      IPADDR_list:
      NETMASK:
      BROADCAST:
      GATEWAY:
      SEARCH:
      DNS1:
      DNS2:
      MTU:
      VLAN:
      NM_CONTROLLED:
- label: manual2
  description: manual network 2
  DEVICE: eth0
  TYPE: Ethernet
  BOOTPROTO: none
  ONBOOT: yes
  NM_CONTROLLED: no

- label: dhcp2
  description: dhcp interface 2
  DEVICE: eth0
  TYPE: Ethernet
  BOOTPROTO: dhcp
  ONBOOT: yes
  NM_CONTROLLED: no

- label: static2
  description: static interface 2
  DEVICE: eth0
  TYPE: Ethernet
  BOOTPROTO: none
  ONBOOT: yes
  IPADDR_list:
      - 9.3.89.14
      - 9.3.89.18-9.3.89.22
      - 9.3.89.111-9.3.89.112
      - 9.3.89.120
  NETMASK: 255.255.255.0
  BROADCAST: 9.3.89.255
  GATEWAY: 9.3.89.1
  SEARCH: your.dns.com
  DNS1: 9.3.1.200
  DNS2: 9.3.1.201
  MTU: 9000
  NM_CONTROLLED: no

- label: vlan3
  description: vlan interface 3
  DEVICE: eth0.10
  BOOTPROTO: none
  ONBOOT: yes
  ONPARENT: yes
  VLAN: yes
  NM_CONTROLLED: no

- label: bridge2
  description: bridge interface 2
  DEVICE: br2
  TYPE: Bridge
  BOOTPROTO: static
  ONBOOT: yes
  IPADDR_start: 10.0.0.100
  NETMASK: 255.255.255.0
  STP: off
  NM_CONTROLLED: no

- label: bridge2_port
  description: port for bridge if 2
  DEVICE: tap_br2
  TYPE: Ethernet
  BOOTPROTO: none
  ONBOOT: yes
  BRIDGE: br2
  NM_CONTROLLED: no

- label: bond2_interface0
  description: primary interface for bond 2
  DEVICE: eth0
  TYPE: Ethernet
  BOOTPROTO: manual
  ONBOOT: yes
  MASTER: bond2
  SLAVE: yes
  NM_CONTROLLED: no

- label: bond2_interface1
  description: secondary interface for bond 2
  DEVICE: eth1
  TYPE: Ethernet
  BOOTPROTO: manual
  ONBOOT: yes
  MASTER: bond2
  SLAVE: yes
  NM_CONTROLLED: no

- label: bond2
  description: bond interface 2
  DEVICE: bond2
  TYPE: Bond
  BONDING_MASTER: yes
  IPADDR_start: 192.168.1.10
  NETMASK: 255.255.255.0
  ONBOOT: yes
  BOOTPROTO: none
  BONDING_OPTS: "mode=active-backup miimon=100"
  NM_CONTROLLED: no

Red Hat formatted OS interface configuration.

Required keys:
label - Unique label of interface configuration to be referenced within networks: node_templates: interfaces:.
Optional keys:
description - Short description of interface configuration to be included as a comment in OS config files.
IPADDR_list - List of IP address to assign client interfaces referencing this configuration. Each list element may either be a single IP address or a range (formatted as <start_address>-<end_address>).
IPADDR_start - Starting IP address to assign client interfaces referencing this configuration. Addresses will be assigned to each client interface incrementally.
Optional "drop-in" keys:
The following key names are derived directly from RHEL's ifcfg configuration files. Values will be copied directly into the ifcfg-<name> files. Refer to the RHEL IP NETWORKING for usage.

DEVICE
TYPE
BOOTPROTO
ONBOOT
ONPARENT
MASTER
SLAVE
BONDING_MASTER
NETMASK
BROADCAST
GATEWAY
SEARCH
DNS1
DNS2
MTU
VLAN
NM_CONTROLLED
Notes:
If 'rename: true' in node_templates: physical_interfaces: pxe/data then the DEVICE value will be used to rename the interface.

If 'rename: false' in node_templates: physical_interfaces: pxe/data then the DEVICE value will be replaced by the interface name assigned by the OS. If the DEVICE value is referenced in any other interface definition it will also be replaced.
no

networks:

networks:
    - label:
      interfaces:
Element Example(s) Description Required
networks:
    - label:
      interfaces:
interfaces:
    - label: example1
      ...
    - label: example2
      ...
    - label: example3
      ...
networks:
    - label: all_nets
      interfaces:
          - example1
          - example2
          - example3
    - label: group1
      interfaces:
          - example1
          - example2
    - label: group2
      interfaces:
          - example1
          - example3

The 'networks' list defines groups of interfaces. These groups can be assigned to items in the node_templates: list.

Required keys:
label - Unique label of network group to be referenced within a node_templates: item's 'networks:' value.
interfaces - List of interfaces assigned to the group.
no

node_templates:

node_templates:
    - label:
      ipmi:
          userid:
          password:
      os:
          hostname_prefix:
          profile:
          install_device:
          users:
              - name:
                password:
          groups:
              - name:
          kernel_options:
      physical_interfaces:
          ipmi:
              - switch:
                ports:
          pxe:
              - switch:
                interface:
                rename:
                ports:
          data:
              - switch:
                interface:
                rename:
                ports:
      interfaces:
      networks:
      roles:
Element Example(s) Description Required
node_templates:
    - label:
      ipmi:
      os:
      physical_interfaces:
      interfaces:
      networks:
      roles:
- label: controllers
  ipmi:
      userid: admin
      password: pass
  os:
      hostname_prefix: ctrl
      profile: ubuntu-14.04-server-ppc64el
      install_device: /dev/sda
      kernel_options: quiet
  physical_interfaces:
      ipmi:
          - switch: mgmt_switch_1
            ports:
                - 1
                - 3
                - 5
      pxe:
          - switch: mgmt_switch_1
            ports:
                - 2
                - 4
                - 6

Node templates define client node configurations. Existing IPMI credentials and network interface physical connection information must be given to allow Cluster POWER-Up to connect to nodes. OS installation characteristics and post install network configurations are also defined.

Required keys:
label - Unique label used to reference this template.
ipmi - IPMI credentials. See node_templates: ipmi.
os - Operating system configuration. See node_templates: os.
physical_interfaces - Physical network interface port mappings. See node_templates: physical_interfaces.
Optional keys:
interfaces - Post-deploy interface assignments. See node_templates: interfaces.
networks - Post-deploy network (interface group) assignments. See node_templates: networks.
roles - Ansible group assignment. See node_templates: roles.
yes
node_templates:
    - ...
      ipmi:
          userid:
          password:
- label: ppc64el
  ipmi:
      userid: ADMIN
      password: admin
  ...
- lable: x86_64
  ipmi:
      userid: ADMIN
      password: ADMIN
  ...

Client node IPMI credentials. Note that IPMI credentials must be consistent for all members of a node template.

Required keys:
userid - IPMI userid.
password - IPMI password.
yes
node_templates:
    - ...
      os:
          hostname_prefix:
          profile:
          install_device:
          users:
              - name:
                password:
          groups:
              - name:
          kernel_options:
- ...
  os:
      hostname_prefix: controller
      profile: ubuntu-14.04-server-ppc64el
      install_device: /dev/sda
      users:
          - name: root
            password: <crypted password>
          - name: user1
            password: <crypted password>
            groups: sudo,testgroup1
      groups:
          - name: testgroup1
          - name: testgroup2
      kernel_options: quiet

Client node operating system configuration.

Required keys:
profile - Cobbler profile to use for OS installation. This name usually should match the name of the installation image (with or without the'.iso' extension).
install_device - Path to installation disk device.
Optional keys:
hostname_prefix - Prefix used to assign hostnames to client nodes belonging to this node template. A "-" and enumeration is added to the end of the prefix to make a unique hostname for each client node (e.g. "controller-1" and "controoler-2").
users - OS user accounts to create. All parameters in the Ansible user module are supported. note: Plaintext user passwords are not supported. For help see Ansible's guide for generating passwords.
groups - OS groups to create. All parameters in the Ansible group module are supported.
kernel_options - Kernel options
yes
node_templates:
    - ...
      physical_interfaces:
          ipmi:
              - switch:
                ports:
          pxe:
              - switch:
                interface:
                rename:
                ports:
          data:
              - switch:
                interface
                rename:
                ports:
- ...
  physical_interfaces:
      ipmi:
          - switch: mgmt_1
            ports:
                - 7
                - 8
                - 9
      pxe:
          - switch: mgmt_1
            interface: eth15
            rename: true
            ports:
                - 10
                - 11
                - 12
      data:
          - switch: data_1
            interface: eth10
            rename: true
            ports:
                - 7
                - 8
                - 9
          - switch: data_1
            interface: eth11
            rename: false
            ports:
                - 10
                - 11
                - 12

Client node interface port mappings.

Required keys:
ipmi - IPMI (BMC) interface port mappings. See physical_interfaces: ipmi.
pxe - PXE (OS) interface port mappings. See physical_interfaces: pxe/data.
Optional keys:
data - Data (OS) interface port mappings. See physical_interfaces: pxe/data.
yes
node_templates:
    - ...
      physical_interfaces:
          ipmi:
              - switch:
                ports:
          ...
- ...
  physical_interfaces:
      ipmi:
          - switch: mgmt_1
            ports:
                - 7
                - 8
                - 9

IPMI (BMC) interface port mappings.

Required keys:
switch - Reference to mgmt switch label defined in the switches: mgmt: element.
ports - List of port number/identifiers mapping to client node IPMI interfaces.

In the example three client nodes are defined and mapped to ports 7,8,9 of a management switch labeled "mgmt_1".

yes
node_templates:
    - ...
      physical_interfaces:
          ...
          pxe:
              - switch:
                interface:
                rename:
                ports:
          data:
              - switch:
                interface:
                rename:
                ports
- ...
  physical_interfaces:
      pxe:
          - switch: mgmt_1
            interface: dhcp1
            rename: true
            ports:
                - 10
                - 11
                - 12
      data:
          - switch: data_1
            interface: manual1
            rename: true
            ports:
                - 7
                - 8
                - 9
          - switch: data_1
            interface: manual2
            rename: false
            ports:
                - 10
                - 11
                - 12

OS (PXE & data) interface port mappings.

Required keys:
switch - Reference to switch label defined in the switches: mgmt: or switches: data: elements.
interface - Reference to interface label defined in the interfaces: elements.
rename - Value (true/false) to control whether client node interfaces will be renamed to match the interface iface (Ubuntu) or DEVICE (RHEL) value.
ports - List of port number/identifiers mapping to client node OS interfaces.
Note: For additional information on using rename see notes in interfaces: (Ubuntu) and interfaces: (RHEL).
yes
node_templates:
    - ...
      interfaces:
interfaces:
    - label: data_int1
    ...
    - label: data_int2
    ...
    - label: data_int3
    ...
node_templates:
    - ...
      interfaces:
          - data_int1
          - data_int2
          - data_int3

OS network interface configuration assignment.

Required keys:
interfaces - List of references to interface labels from the top-level interfaces: dictionary.
no
node_templates:
    - ...
      networks:
interfaces:
    - label: data_int1
    ...
    - label: data_int2
    ...
    - label: data_int3
    ...
networks:
    - label: data_group1
      interfaces:
          - data_int1
          - data_int2
          - data_int3
node_templates:
    - ...
      networks:
          - data_group1

OS network interface configuration assignment by group.

Required keys:
networks - List of references to network labels from the top-level networks: dictionary.
no
node_templates:
    - ...
      roles:
roles:
    - controllers
    - power_servers

Ansible role/group assignment.

Required keys:
roles - List of roles (Ansible groups) to assign to client nodes associated with this node template. Names can be any string.
no

software_bootstrap:

software_bootstrap:
    - hosts:
      executable:
      command:
Element Example(s) Description Required
software_bootstrap:
    - hosts:
      executable:
      command:
software_bootstrap:
    - hosts: all
      command: apt-get update
    - hosts: openstackservers
      executable: /bin/bash
      command: |
        set -e
        apt update
        apt upgrade -y

Software bootstrap defines commands to be run on client nodes after Cluster Genesis completes. This is useful for various additional configuration activities, such as bootstrapping additional software package installations.

Required keys:
hosts - Hosts to run commands on. The value can be set to 'all' to run on all hosts, node_template labels, or role/group names.
command - Command to run.
Optional keys:
executable - Path to shell used to execute the command.
no