# 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_iface_spec - specifies the NIC types that will be used for the leaf spine
  #                     fabric in the deployment. This defaults to "i40e|mlx4_en". The
  #                     format is values separated by a vertical bar '|' without spaces.
  #                     The value that this is compared against is the value return by
  #                     `ethtool -i <iface>` on the head and compute nodes.
  #
  #fabric_iface_spec: one|two|three
  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.1.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'

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.1.1.1/24
    management: 10.1.0.0/24
    range_low: 10.1.1.2
    range_high: 10.6.1.253
