--- ############################################################################### # Ironic inspector PXE configuration. # List of extra kernel parameters for the inspector default PXE configuration. inspector_extra_kernel_options: "{{ ipa_kernel_options_collect_lldp }}" # URL of Ironic Python Agent (IPA) kernel image. inspector_ipa_kernel_upstream_url: "{{ ipa_images_kernel_url }}" # URL of Ironic Python Agent (IPA) ramdisk image. inspector_ipa_ramdisk_upstream_url: "{{ ipa_images_ramdisk_url }}" ############################################################################### # Ironic inspector processing configuration. # Whether inspector should manage the firewall. inspector_manage_firewall: False # List of of inspector processing plugins. inspector_processing_hooks: - root_disk_selection - scheduler - validate_interfaces - ramdisk_error - capabilities - pci_devices - raid_device - local_link_connection - lldp_basic # Which MAC addresses to add as ports during introspection. One of 'all', # 'active' or 'pxe'. inspector_port_addition: "all" # Whether to enable discovery of nodes not managed by Ironic. inspector_enable_discovery: True # The Ironic driver with which to register newly discovered nodes. inspector_discovery_enroll_node_driver: "agent_ipmitool" ############################################################################### # Ironic inspector configuration. # Ironic inspector IPMI username to set. inspector_ipmi_username: # Ironic inspector IPMI password to set. inspector_ipmi_password: # Ironic inspector network interface name on which to check for an LLDP switch # port description to use as the node's name. inspector_lldp_switch_port_interface: ############################################################################### # Ironic inspector introspection rules configuration. # Ironic inspector rule to set IPMI credentials. inspector_rule_ipmi_credentials: description: "Set IPMI driver_info if no credentials" conditions: - field: "node://driver_info.ipmi_username" op: "is-empty" - field: "node://driver_info.ipmi_password" op: "is-empty" actions: - action: "set-attribute" path: "driver_info/ipmi_username" value: "{{ inspector_rule_var_ipmi_username }}" - action: "set-attribute" path: "driver_info/ipmi_password" value: "{{ inspector_rule_var_ipmi_password }}" # Ironic inspector rule to set deployment kernel. inspector_rule_deploy_kernel: description: "Set deploy kernel" conditions: - field: "node://driver_info.deploy_kernel" op: "is-empty" actions: - action: "set-attribute" path: "driver_info/deploy_kernel" value: "{{ inspector_rule_var_deploy_kernel }}" # Ironic inspector rule to set deployment ramdisk. inspector_rule_deploy_ramdisk: description: "Set deploy ramdisk" conditions: - field: "node://driver_info.deploy_ramdisk" op: "is-empty" actions: - action: "set-attribute" path: "driver_info/deploy_ramdisk" value: "{{ inspector_rule_var_deploy_ramdisk }}" # Ironic inspector rule to set local boot capability inspector_rule_local_boot: description: "Set local boot capability" conditions: [] actions: - action: "set-capability" name: "boot_option" value: "local" # Ironic inspector rule to initialise root device hints. inspector_rule_root_hint_init: description: "Initialise root device hint" conditions: - field: "node://properties.root_device" op: "is-empty" actions: # Inspector can't combine references to introspection data with non-string # types, see https://bugs.launchpad.net/ironic-inspector/+bug/1670768. We # must therefore first set the root_device property to an empty dict, then # update the fields within it. - action: "set-attribute" path: "properties/root_device" value: {} # Ironic inspector rule to set serial root device hint. inspector_rule_root_hint_serial: description: "Set serial root device hint" conditions: - field: "data://root_disk.serial" op: "is-empty" invert: True actions: - action: "set-attribute" path: "properties/root_device/serial" value: "{data[root_disk][serial]}" # Ironic inspector rule to set the interface on which the node PXE booted. inspector_rule_set_pxe_interface_mac: description: "Set node PXE interface MAC address" conditions: - field: "data://boot_interface" op: "is-empty" invert: True actions: - action: "set-attribute" path: "extra/pxe_interface_mac" value: "{data[boot_interface]}" # Ironic inspector rule to set the node's name from an interface's LLDP switch # port description. inspector_rule_lldp_switch_port_desc_to_name: description: "Set node name from {{ inspector_rule_var_lldp_switch_port_interface }} LLDP switch port description" conditions: - field: "data://all_interfaces.{{ inspector_rule_var_lldp_switch_port_interface }}.lldp_processed.switch_port_description" op: "is-empty" invert: True actions: - action: "set-attribute" path: "name" value: "{data[all_interfaces][{{ inspector_rule_var_lldp_switch_port_interface }}][lldp_processed][switch_port_description]}" # Ironic inspector rule to save introspection data to the node. inspector_rule_save_data: description: "Save introspection data to Ironic node" conditions: [] actions: - action: "set-attribute" path: "extra/introspection_data" value: "{data}" # List of default ironic inspector rules. inspector_rules_default: - "{{ inspector_rule_ipmi_credentials }}" - "{{ inspector_rule_deploy_kernel }}" - "{{ inspector_rule_deploy_ramdisk }}" - "{{ inspector_rule_local_boot }}" - "{{ inspector_rule_root_hint_init }}" - "{{ inspector_rule_root_hint_serial }}" - "{{ inspector_rule_set_pxe_interface_mac }}" - "{{ inspector_rule_lldp_switch_port_desc_to_name }}" # List of additional ironic inspector rules. inspector_rules_extra: [] # List of all ironic inspector rules. inspector_rules: "{{ inspector_rules_default + inspector_rules_extra }}"