---
# The Tenks command to perform. 'deploy' will spin up a cluster to the given
# specification; 'teardown' will tear it down.
cmd: deploy

# node_types is a dict that defines different sets of node specifications,
# keyed by a 'node type name' to associate with each set of specifications. An
# example of the format of this variable is below:
#
# node_types:
#   # The type name.
#   type0:
#     # The amount of RAM, in mebibytes.
#     memory_mb: 1024
#     # The number of virtual CPUs.
#     vcpus: 2
#     # A list of volumes, each with a capacity.
#     volumes:
#       - capacity: 2GB
#     # A list of physical network names to connect to. These physical network
#     # names should be keyed in `physnet_mappings` in each hypervisor's host
#     # vars.
#     physical_networks:
#       - physnet1
#     # The Ironic driver for nodes of this type. If not set,
#     # `default_ironic_driver` will be used.
#     ironic_driver: ipmi
#     # If true, log the nodes' console output to files in `log_directory`,
#     # instead of to a PTY. If false, direct terminal output to a PTY at
#     # serial port 0. If not set, the stackhpc.libvirt-vm role will handle the
#     # default behaviour.
#     console_log_enabled: false
node_types: {}

# specs is a list of configurations of nodes to be created. Each configuration
# can specify the number of nodes to be created, the type (from `node_types`)
# of these nodes, and optionally configuration for the Ironic nodes to be
# enroled from these nodes. If `ironic_config` is not set, Ironic enrolment
# will be skipped for that spec.
# For example:
#
# specs:
#     # The type in `node_types` that this spec refers to. Required.
#   - type: type0
#     # The number of nodes to create of this spec. Required.
#     count: 4
#     # Node name prefix for this spec. Optional. If unspecified the global
#     'node_name_prefix' variable will be used instead (default 'tk').
#     node_name_prefix: bm
#     # Volume name prefix. Optional. If unspecified the global
#     'vol_name_prefix' variable will be used instead (default 'vol').
#     vol_name_prefix: volly
#     # The Ironic configuration for nodes of this spec. Optional.
#     ironic_config:
#       # The resource class that nodes of this spec should use in Ironic.
#       # Required if `ironic_config` has been specified.
#       resource_class: my_rc
#       # Traits that nodes of this spec should have in Ironic. Optional -
#       # defaults to [].
#       traits: []
#       # A dict of key-value pairs to be set as properties on the Ironic
#       # nodes. Can be used to set capabilities. Optional - defaults to {}.
#       properties: {}
#       # The following variables are all optional; if not set, Ironic's
#       # default value will be used.
#       bios_interface: no-bios
#       boot_interface: pxe
#       console_interface: ipmitool-socat
#       deploy_interface: iscsi
#       inspect_interface: inspector
#       management_interface: ipmitool
#       network_interface: neutron
#       power_interface: ipmitool
#       raid_interface: no-raid
#       storage_interface: noop
#       vendor_interface: ipmitool
specs: []

# nova_flavors is a list of Nova flavors to be created. Each flavor must
# specify the resource class it is associated with, as well as the Tenks node
# type whose hardware specs should be used.
# For example:
#
# nova_flavors:
#     # Required.
#   - resource_class: my_rc
#     # Required.
#     node_type: type0
#     # Defaults to `resource_class`.
#     name: my_flavor
#     # Optional, defaults to [].
#     required_traits: []
#     # Optional, defaults to [].
#     forbidden_traits: []
#     # Extra key-value pairs to add to the flavor's specs. Optional, defaults
#     # to {}.
#     custom_specs: {}
nova_flavors: []

# The Glance name or UUID of the image to use for the deployment kernel.
deploy_kernel:
# The Glance name or UUID of the image to use for the deployment ramdisk.
deploy_ramdisk:

# The path to the file which contains the state of the current Tenks cluster
# that is deployed. This includes details such as allocations of nodes to
# hypervisors, and unique indices of physical networks.
state_file_path: >-
    {{ '/'.join([(playbook_dir | dirname), 'state.yml']) }}

# The default Ironic driver of a node. Can be overridden per-node.
default_ironic_driver: ipmi

# Maps Ironic drivers to the BMC emulation tool they support.
bmc_emulators:
  agent_ipmitool: virtualbmc
  agent_ipmitool_socat: virtualbmc
  ipmi: virtualbmc
  pxe_ipmitool: virtualbmc
  pxe_ipmitool_socat: virtualbmc
  pxe_snmp: virtualpdu
  redfish: sushy-tools
  snmp: virtualpdu

# Whether to wait for nodes' resources to be registered in the Placement
# service. If the Placement service is not in use, for example in standalone
# ironic installations, this flag should be set to 'false'.
wait_for_placement: true
