# Deployment configuration for a phyical hardware POD
---

headnode:
  ip: '10.90.0.2'
  ansible_user: 'ubuntu'
  ansible_ssh_pass: 'ubuntu'
  ansible_ssh_port: 22

common:
  # set to the profile of cord you want to install
  cord_profile: 'rcord'

  # directories on the head node that the cord dir is copied to, and profile is created in
  cord_dir: '/opt/cord'
  cord_profile_dir: '/opt/cord_profile'
  credentials_dir: '/opt/credentials'
  pki_dir: '/opt/pki'
  ssh_pki_dir: '/opt/ssh_pki'

  # 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'
  #fabric_range_low: '10.6.1.2'
  #fabric_range_high: '10.6.1.100'
  management_ip: '10.6.0.1/24'
  #management_range_low: '10.6.0.2'
  #management_range_high: '10.6.0.127'
  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>,...'
  #  - ubuntu_apt_repo="deb [arch=amd64] http://10.1.0.1:8889/mirror/archive.ubuntu.com/ubuntu trusty main universe"
  #  - ubuntu_updates_apt_repo="deb [arch=amd64] http://10.1.0.1:8889/mirror/archive.ubuntu.com/ubuntu trusty-updates main universe"
  #  - docker_apt_repo="deb [arch=amd64] http://10.1.0.1:8889/mirror/apt.dockerproject.org/repo ubuntu-trusty main"
  #  - java_apt_repo="deb [arch=amd64] http://10.1.0.1:8889/mirror/ppa.launchpad.net/webupd8team/java/ubuntu trusty main"
  #  - ansible_apt_repo="deb [arch=amd64] http://10.1.0.1:8889/mirror/ppa.launchpad.net/ansible/ansible/ubuntu trusty main"
  #  - maas_apt_repo="deb [arch=amd64] http://10.1.0.1:8889/mirror/ppa.launchpad.net/maas/stable/ubuntu trusty main"
  #  - dell_apt_repo="deb [arch=amd64] http://10.1.0.1:8889/mirror/linux.dell.com/repo/community trusty openmanage"
  #  - juju_apt_repo="deb [arch=amd64] http://10.1.0.1:8889/mirror/ppa.launchpad.net/juju/stable/ubuntu trusty main"

# If passwords are not set, random passwords will be generated
passwords:
  #compute_node: ubuntu
  #maas_admin: admin
  #maas_user: cord

docker:
  imageVersion: candidate
