# Deployment configuration for a phyical hardware POD
---
seedServer:
  # IP address of the head node
  ip: '10.90.0.2'

  # If the head node is being accessed via a tunnel or reponds to SSH on a non-
  # standard port, the port value should be set.
  # port: '2022'

  # User name and password used by Ansible to connect to the host for remote
  # provisioning
  user: 'ubuntu'
  password: 'ubuntu'

  # Network address information for the head node:
  #
  # fabric_ip     - the IP address and mask bits to be used to configure the network
  #                 interface connected to the leaf - spine fabric
  #
  # management_ip - the IP address and mask bits to be used to configure the network
  #                 interface connecting the head node to the POD internal
  #                 management network. The head node will deliver DHCP addresses to
  #                 the other compute nodes over this interface
  #
  # external_ip   - the IP address and mask bits to be used to configure the network
  #                 interface connecting the head node (and the POD) to the
  #                 Internet. All traffic in the POD to external hosts will be
  #                 NAT-ed through this interface
  # external_iface   - the name of the interface that connects the head node to the
  #                    Internet
  # management_network - the network and mask bits to used for hosts on the management
  #                      network
  fabric_ip: '10.6.1.1/24'
  management_ip: '10.6.0.1/24'
  external_ip: '47.135.132.21/24'
  #external_iface: 'eth2'
  management_network: 10.6.0.0/24

  # the skipTags options allow various part of the deployment to be skipped
  # switch_support - does not deploy switch boot images to the PXE server
  #
  # reboot - will not reboot the head node after updating its network configuration
  #          this may mean the network configuration will not take effect, but will
  #          also prevent you from being locked out of the server if there is a
  #          network configuration error.
  #
  # interface_config - will not modify the network configuration of the head node,
  #                    including the consistent naming of the network interfaces
  skipTags:
  #  - 'switch_support'
  #  - 'reboot'
  #  - 'interface_config'

  # The following variable settings can be used to customize how the network interfaces
  # are selected into the fabric and management bridge interface or ignored/excluded.
  # See the documentation docs/quickstart_physical.md for more information about how
  # to set these variables.
  extraVars:
  #  - 'fabric_include_names=<name1>,<name2>,...'
  #  - 'fabric_include_module_types=<mtype1>,<mtype2>,...'
  #  - 'fabric_include_bus_types=<btype1>,<btype2>,...'
  #  - 'fabric_exclude_names=<name1>,<name2>,...'
  #  - 'fabric_exclude_module_types=<mtype1>,<mtype2>,...'
  #  - 'fabric_exclude_bus_types=<btype1>,<btype2>,...'
  #  - 'fabric_ignore_names=<name1>,<name2>,...'
  #  - 'fabric_ignore_module_types=<mtype1>,<mtype2>,...'
  #  - 'fabric_ignore_bus_types=<btype1>,<btype2>,...'
  #  - 'management_include_names=<name1>,<name2>,...'
  #  - 'management_include_module_types=<mtype1>,<mtype2>,...'
  #  - 'management_include_bus_types=<btype1>,<btype2>,...'
  #  - 'management_exclude_names=<name1>,<name2>,...'
  #  - 'management_exclude_module_types=<mtype1>,<mtype2>,...'
  #  - 'management_exclude_bus_types=<btype1>,<btype2>,...'
  #  - 'management_ignore_names=<name1>,<name2>,...'
  #  - 'management_ignore_module_types=<mtype1>,<mtype2>,...'
  #  - 'management_ignore_bus_types=<btype1>,<btype2>,...'

docker:
  imageVersion: candidate

otherNodes:
  # Experimental
  #
  # Specifies the subnet and address range that will be used to allocate IP addresses
  # to the compute nodes as they are deployed into the POD.
  fabric:
    network: 10.6.1.1/24
    management: 10.6.0.0/24
    range_low: 10.6.1.2
    range_high: 10.6.1.253
