From ce48b4c85c14ae5da56720c42d24f99dbaa84397 Mon Sep 17 00:00:00 2001 From: Dmitry Tantsur Date: Mon, 27 Nov 2017 12:35:30 +0100 Subject: [PATCH] undercloud: support the standard set of hardware types and interface This change makes the THT-based undercloud use the same set of hardware types and hardware interfaces as the instack-based by default. IronicEnabled***Interfaces options are exposed for all interfaces, except for work-in-progress rescue interface. Change-Id: I97ce4eec9c8765480a5fd2e51ebd25e438f52754 Partial-Bug: #1690185 --- environments/undercloud.yaml | 17 +++++++++ puppet/services/ironic-conductor.yaml | 50 +++++++++++++++++++++++++-- 2 files changed, 65 insertions(+), 2 deletions(-) diff --git a/environments/undercloud.yaml b/environments/undercloud.yaml index 6b057e78f8..fd98dbcdb6 100644 --- a/environments/undercloud.yaml +++ b/environments/undercloud.yaml @@ -19,6 +19,23 @@ parameter_defaults: HeatConvergenceEngine: false HeatMaxResourcesPerStack: -1 HeatMaxJsonBodySize: 2097152 + IronicEnabledHardwareTypes: ['ipmi', 'redfish', 'idrac', 'ilo'] + IronicEnabledBootInterfaces: ['pxe', 'ilo-pxe'] + IronicEnabledConsoleInterfaces: ['ipmitool-socat', 'ilo', 'no-console'] + # TODO(dtantsur): one day we may want to support the direct deploy too + IronicEnabledDeployInterfaces: ['iscsi'] + IronicEnabledInspectInterfaces: ['inspector', 'no-inspect'] + IronicEnabledManagementInterfaces: ['ipmitool', 'redfish', 'idrac', 'ilo'] + # NOTE(dtantsur): disabling advanced networking as it's not used (or + # configured) in the undercloud + IronicEnabledNetworkInterfaces: ['flat'] + IronicEnabledPowerInterfaces: ['ipmitool', 'redfish', 'idrac', 'ilo'] + # NOTE(dtantsur): disabling the "agent" RAID as our ramdisk does not contain + # any vendor-specific RAID additions. + IronicEnabledRaidInterfaces: ['no-raid'] + # NOTE(dtantsur): we don't use boot-from-cinder on the undercloud + IronicEnabledStorageInterfaces: ['noop'] + IronicEnabledVendorInterfaces: ['ipmitool', 'idrac', 'no-vendor'] IronicInspectorCollectors: default,extra-hardware,numa-topology,logs IronicInspectorInterface: br-ctlplane IronicInspectorIpRange: '192.168.24.100,192.168.24.200' diff --git a/puppet/services/ironic-conductor.yaml b/puppet/services/ironic-conductor.yaml index 9a3c393bf8..3e0a133748 100644 --- a/puppet/services/ironic-conductor.yaml +++ b/puppet/services/ironic-conductor.yaml @@ -68,16 +68,56 @@ parameters: default: ['ipmi', 'redfish'] description: Enabled Ironic hardware types type: comma_delimited_list + IronicEnabledBootInterfaces: + default: ['pxe'] + description: Enabled boot interface implementations. Each hardware + type must have at least one valid implementation enabled. + type: comma_delimited_list + IronicEnabledConsoleInterfaces: + default: ['ipmitool-socat', 'no-console'] + description: Enabled console interface implementations. Each hardware + type must have at least one valid implementation enabled. + type: comma_delimited_list + IronicEnabledDeployInterfaces: + default: ['iscsi', 'direct'] + description: Enabled deploy interface implementations. Each hardware + type must have at least one valid implementation enabled. + type: comma_delimited_list + IronicEnabledInspectInterfaces: + default: ['no-inspect'] + description: Enabled inspect interface implementations. Each hardware + type must have at least one valid implementation enabled. + type: comma_delimited_list IronicEnabledManagementInterfaces: default: ['ipmitool', 'redfish'] description: Enabled management interface implementations. Each hardware type must have at least one valid implementation enabled. type: comma_delimited_list + IronicEnabledNetworkInterfaces: + default: ['flat', 'neutron'] + description: Enabled network interface implementations. Each hardware + type must have at least one valid implementation enabled. + type: comma_delimited_list IronicEnabledPowerInterfaces: default: ['ipmitool', 'redfish'] description: Enabled power interface implementations. Each hardware type must have at least one valid implementation enabled. type: comma_delimited_list + IronicEnabledRaidInterfaces: + default: ['no-raid', 'agent'] + description: Enabled RAID interface implementations. Each hardware + type must have at least one valid implementation enabled. + type: comma_delimited_list + IronicEnabledStorageInterfaces: + default: ['cinder', 'noop'] + description: Enabled storage interface implementations. Each hardware + type must have at least one valid implementation enabled. + type: comma_delimited_list + IronicEnabledVendorInterfaces: + default: ['ipmitool', 'no-vendor'] + description: Enabled vendor interface implementations. Each hardware + type must have at least one valid implementation enabled. + type: comma_delimited_list IronicIPXEEnabled: default: true description: Whether to use iPXE instead of PXE for deployment. @@ -150,10 +190,16 @@ outputs: # NOTE(dtantsur): UEFI only works with iPXE currently for us ironic::drivers::pxe::uefi_pxe_config_template: '$pybasedir/drivers/modules/ipxe_config.template' ironic::drivers::pxe::uefi_pxe_bootfile_name: 'ipxe.efi' - ironic::drivers::interfaces::enabled_console_interfaces: ['ipmitool-socat', 'no-console'] + ironic::drivers::interfaces::enabled_boot_interfaces: {get_param: IronicEnabledBootInterfaces} + ironic::drivers::interfaces::enabled_console_interfaces: {get_param: IronicEnabledConsoleInterfaces} + ironic::drivers::interfaces::enabled_deploy_interfaces: {get_param: IronicEnabledDeployInterfaces} + ironic::drivers::interfaces::enabled_inspect_interfaces: {get_param: IronicEnabledInspectInterfaces} ironic::drivers::interfaces::enabled_management_interfaces: {get_param: IronicEnabledManagementInterfaces} - ironic::drivers::interfaces::enabled_network_interfaces: ['flat', 'neutron'] + ironic::drivers::interfaces::enabled_network_interfaces: {get_param: IronicEnabledNetworkInterfaces} ironic::drivers::interfaces::enabled_power_interfaces: {get_param: IronicEnabledPowerInterfaces} + ironic::drivers::interfaces::enabled_raid_interfaces: {get_param: IronicEnabledRaidInterfaces} + ironic::drivers::interfaces::enabled_storage_interfaces: {get_param: IronicEnabledStorageInterfaces} + ironic::drivers::interfaces::enabled_vendor_interfaces: {get_param: IronicEnabledVendorInterfaces} ironic::drivers::interfaces::default_network_interface: {get_param: IronicDefaultNetworkInterface} tripleo.ironic_conductor.firewall_rules: '134 ironic conductor TFTP':