diff --git a/ironic/files/ocata/ironic.conf b/ironic/files/ocata/ironic.conf
index 0509bad..2910ed2 100644
--- a/ironic/files/ocata/ironic.conf
+++ b/ironic/files/ocata/ironic.conf
@@ -1494,7 +1494,7 @@
 
 # Authentication URL (string value)
 {%- if conductor.get('glance', {}).get('auth_strategy') == 'keystone' %}
-auth_url = {{ conductor.identity.protocol }}://{{ conductor.identity.host }}:{{ conductor.identity.port }}/identity
+auth_url = {{ conductor.identity.protocol }}://{{ conductor.identity.host }}:{{ conductor.identity.port }}
 {%- if conductor.identity.protocol == 'https' %}
 cafile={{ conductor.identity.get('cacert_file', conductor.cacert_file) }}
 {%- endif %}
@@ -1761,19 +1761,36 @@
 #
 
 # Timeout (in seconds) for iLO operations (integer value)
+{%- if conductor.get('ilo', {}).get('client_timeout') %}
+client_timeout = {{ conductor.ilo.client_timeout }}
+{%- else %}
 #client_timeout = 60
+{%- endif %}
 
 # Port to be used for iLO operations (port value)
 # Minimum value: 0
 # Maximum value: 65535
+{%- if conductor.get('ilo', {}).get('client_port') %}
+client_port = {{ conductor.ilo.client_port }}
+{%- else %}
 #client_port = 443
+{%- endif %}
+
 
 # The Swift iLO container to store data. (string value)
+{%- if conductor.get('ilo', {}).get('swift_ilo_container') %}
+swift_ilo_container = {{ conductor.ilo.swift_ilo_container }}
+{%- else %}
 #swift_ilo_container = ironic_ilo_container
+{%- endif %}
 
 # Amount of time in seconds for Swift objects to auto-expire.
 # (integer value)
+{%- if conductor.get('ilo', {}).get('swift_object_expiry_timeout') %}
+swift_object_expiry_timeout = {{ conductor.ilo.swift_object_expiry_timeout }}
+{%- else %}
 #swift_object_expiry_timeout = 900
+{%- endif %}
 
 # Set this to True to use http web server to host floppy
 # images and generated boot ISO. This requires http_root and
@@ -1781,7 +1798,11 @@
 # config file. If this is set to False, then Ironic will use
 # Swift to host the floppy images and generated boot_iso.
 # (boolean value)
+{%- if conductor.get('ilo', {}).get('use_web_server_for_images') %}
+use_web_server_for_images = {{ conductor.ilo.use_web_server_for_images }}
+{%- else %}
 #use_web_server_for_images = false
+{%- endif %}
 
 # DEPRECATED: Priority for erase devices clean step. If unset,
 # it defaults to 10. If set to 0, the step will be disabled
@@ -1790,40 +1811,77 @@
 # Its value may be silently ignored in the future.
 # Reason: This configuration option is duplicated by [deploy]
 # erase_devices_priority, please use that instead.
+{%- if conductor.get('ilo', {}).get('clean_priority_erase_devices') %}
+clean_priority_erase_devices = {{ conductor.ilo.clean_priority_erase_devices }}
+{%- else %}
 #clean_priority_erase_devices = <None>
+{%- endif %}
 
 # Priority for reset_ilo clean step. (integer value)
+{%- if conductor.get('ilo', {}).get('clean_priority_reset_ilo') %}
+clean_priority_reset_ilo = {{ conductor.ilo.clean_priority_reset_ilo }}
+{%- else %}
 #clean_priority_reset_ilo = 0
+{%- endif %}
 
 # Priority for reset_bios_to_default clean step. (integer
 # value)
+{%- if conductor.get('ilo', {}).get('clean_priority_reset_bios_to_default') %}
+clean_priority_reset_bios_to_default = {{ conductor.ilo.clean_priority_reset_bios_to_default }}
+{%- else %}
 #clean_priority_reset_bios_to_default = 10
+{%- endif %}
 
 # Priority for reset_secure_boot_keys clean step. This step
 # will reset the secure boot keys to manufacturing defaults.
 # (integer value)
+{%- if conductor.get('ilo', {}).get('clean_priority_reset_secure_boot_keys_to_default') %}
+clean_priority_reset_secure_boot_keys_to_default = {{ conductor.ilo.clean_priority_reset_secure_boot_keys_to_default }}
+{%- else %}
 #clean_priority_reset_secure_boot_keys_to_default = 20
+{%- endif %}
 
 # Priority for clear_secure_boot_keys clean step. This step is
 # not enabled by default. It can be enabled to clear all
 # secure boot keys enrolled with iLO. (integer value)
+{%- if conductor.get('ilo', {}).get('clean_priority_clear_secure_boot_keys') %}
+clean_priority_clear_secure_boot_keys = {{ conductor.ilo.clean_priority_clear_secure_boot_keys }}
+{%- else %}
 #clean_priority_clear_secure_boot_keys = 0
+{%- endif %}
+
 
 # Priority for reset_ilo_credential clean step. This step
 # requires "ilo_change_password" parameter to be updated in
 # nodes's driver_info with the new password. (integer value)
+{%- if conductor.get('ilo', {}).get('clean_priority_reset_ilo_credential') %}
+clean_priority_reset_ilo_credential = {{ conductor.ilo.clean_priority_reset_ilo_credential }}
+{%- else %}
 #clean_priority_reset_ilo_credential = 30
+{%- endif %}
 
 # Number of times a power operation needs to be retried
 # (integer value)
+{%- if conductor.get('ilo', {}).get('power_retry') %}
+power_retry = {{ conductor.ilo.power_retry }}
+{%- else %}
 #power_retry = 6
+{%- endif %}
 
 # Amount of time in seconds to wait in between power
 # operations (integer value)
+{%- if conductor.get('ilo', {}).get('power_wait') %}
+power_wait = {{ conductor.ilo.power_wait }}
+{%- else %}
 #power_wait = 2
+{%- endif %}
 
 # CA certificate file to validate iLO. (string value)
+{%- if conductor.get('ilo', {}).get('ca_file') %}
+ca_file = {{ conductor.ilo.ca_file }}
+{%- else %}
 #ca_file = <None>
+{%- endif %}
 
 # Default boot mode to be used in provisioning when
 # "boot_mode" capability is not provided in the
@@ -1832,7 +1890,11 @@
 # default boot mode will be selected based on boot mode
 # settings on the system. (string value)
 # Allowed values: auto, bios, uefi
+{%- if conductor.get('ilo', {}).get('default_boot_mode') %}
+default_boot_mode = {{ conductor.ilo.default_boot_mode }}
+{%- else %}
 #default_boot_mode = auto
+{%- endif %}
 
 
 [inspector]
@@ -2069,7 +2131,7 @@
 
 # Authentication URL (string value)
 {%- if ironic.get('identity', {}).get('engine') == 'keystone' %}
-auth_url = {{ ironic.identity.protocol }}://{{ ironic.identity.host }}:{{ ironic.identity.port }}/identity
+auth_url = {{ ironic.identity.protocol }}://{{ ironic.identity.host }}:{{ ironic.identity.port }}
 {%- if ironic.identity.protocol == 'https' %}
 cafile={{ ironic.identity.get('cacert_file', ironic.cacert_file) }}
 {%- endif %}
@@ -2536,7 +2598,7 @@
 
 # Authentication URL (string value)
 {%- if conductor.get('neutron', {}).get('auth_strategy') == 'keystone' %}
-auth_url = {{ conductor.identity.protocol }}://{{ conductor.identity.host }}:{{ conductor.identity.port }}/identity
+auth_url = {{ conductor.identity.protocol }}://{{ conductor.identity.host }}:{{ conductor.identity.port }}
 {%- if conductor.identity.protocol == 'https' %}
 cafile={{ conductor.identity.get('cacert_file', conductor.cacert_file) }}
 {%- endif %}
@@ -3697,7 +3759,7 @@
 
 # Authentication URL (string value)
 {%- if ironic.get('identity', {}).get('engine') == 'keystone' %}
-auth_url = {{ ironic.identity.protocol }}://{{ ironic.identity.host }}:{{ ironic.identity.port }}/identity
+auth_url = {{ ironic.identity.protocol }}://{{ ironic.identity.host }}:{{ ironic.identity.port }}
 {%- if ironic.identity.protocol == 'https' %}
 cafile={{ ironic.identity.get('cacert_file', ironic.cacert_file) }}
 {%- endif %}
diff --git a/ironic/files/pike/ironic.conf b/ironic/files/pike/ironic.conf
index 6ae4419..abd8737 100644
--- a/ironic/files/pike/ironic.conf
+++ b/ironic/files/pike/ironic.conf
@@ -1657,7 +1657,7 @@
 
 # Authentication URL (string value)
 {%- if conductor.get('glance', {}).get('auth_strategy') == 'keystone' %}
-auth_url = {{ conductor.identity.protocol }}://{{ conductor.identity.host }}:{{ conductor.identity.port }}/identity
+auth_url = {{ conductor.identity.protocol }}://{{ conductor.identity.host }}:{{ conductor.identity.port }}
 {%- if conductor.identity.protocol == 'https' %}
 cafile={{ conductor.identity.get('cacert_file', conductor.cacert_file) }}
 {%- endif %}
@@ -1924,19 +1924,35 @@
 #
 
 # Timeout (in seconds) for iLO operations (integer value)
+{%- if conductor.get('ilo', {}).get('client_timeout') %}
+client_timeout = {{ conductor.ilo.client_timeout }}
+{%- else %}
 #client_timeout = 60
+{%- endif %}
 
 # Port to be used for iLO operations (port value)
 # Minimum value: 0
 # Maximum value: 65535
+{%- if conductor.get('ilo', {}).get('client_port') %}
+client_port = {{ conductor.ilo.client_port }}
+{%- else %}
 #client_port = 443
+{%- endif %}
 
 # The Swift iLO container to store data. (string value)
+{%- if conductor.get('ilo', {}).get('swift_ilo_container') %}
+swift_ilo_container = {{ conductor.ilo.swift_ilo_container }}
+{%- else %}
 #swift_ilo_container = ironic_ilo_container
+{%- endif %}
 
 # Amount of time in seconds for Swift objects to auto-expire.
 # (integer value)
+{%- if conductor.get('ilo', {}).get('swift_object_expiry_timeout') %}
+swift_object_expiry_timeout = {{ conductor.ilo.swift_object_expiry_timeout }}
+{%- else %}
 #swift_object_expiry_timeout = 900
+{%- endif %}
 
 # Set this to True to use http web server to host floppy
 # images and generated boot ISO. This requires http_root and
@@ -1944,7 +1960,11 @@
 # config file. If this is set to False, then Ironic will use
 # Swift to host the floppy images and generated boot_iso.
 # (boolean value)
+{%- if conductor.get('ilo', {}).get('use_web_server_for_images') %}
+use_web_server_for_images = {{ conductor.ilo.use_web_server_for_images }}
+{%- else %}
 #use_web_server_for_images = false
+{%- endif %}
 
 # DEPRECATED: Priority for erase devices clean step. If unset,
 # it defaults to 10. If set to 0, the step will be disabled
@@ -1953,40 +1973,76 @@
 # Its value may be silently ignored in the future.
 # Reason: This configuration option is duplicated by [deploy]
 # erase_devices_priority, please use that instead.
+{%- if conductor.get('ilo', {}).get('clean_priority_erase_devices') %}
+clean_priority_erase_devices = {{ conductor.ilo.clean_priority_erase_devices }}
+{%- else %}
 #clean_priority_erase_devices = <None>
+{%- endif %}
 
 # Priority for reset_ilo clean step. (integer value)
+{%- if conductor.get('ilo', {}).get('clean_priority_reset_ilo') %}
+clean_priority_reset_ilo = {{ conductor.ilo.clean_priority_reset_ilo }}
+{%- else %}
 #clean_priority_reset_ilo = 0
+{%- endif %}
 
 # Priority for reset_bios_to_default clean step. (integer
 # value)
+{%- if conductor.get('ilo', {}).get('clean_priority_reset_bios_to_default') %}
+clean_priority_reset_bios_to_default = {{ conductor.ilo.clean_priority_reset_bios_to_default }}
+{%- else %}
 #clean_priority_reset_bios_to_default = 10
+{%- endif %}
 
 # Priority for reset_secure_boot_keys clean step. This step
 # will reset the secure boot keys to manufacturing defaults.
 # (integer value)
+{%- if conductor.get('ilo', {}).get('clean_priority_reset_secure_boot_keys_to_default') %}
+clean_priority_reset_secure_boot_keys_to_default = {{ conductor.ilo.clean_priority_reset_secure_boot_keys_to_default }}
+{%- else %}
 #clean_priority_reset_secure_boot_keys_to_default = 20
+{%- endif %}
 
 # Priority for clear_secure_boot_keys clean step. This step is
 # not enabled by default. It can be enabled to clear all
 # secure boot keys enrolled with iLO. (integer value)
+{%- if conductor.get('ilo', {}).get('clean_priority_clear_secure_boot_keys') %}
+clean_priority_clear_secure_boot_keys = {{ conductor.ilo.clean_priority_clear_secure_boot_keys }}
+{%- else %}
 #clean_priority_clear_secure_boot_keys = 0
+{%- endif %}
 
 # Priority for reset_ilo_credential clean step. This step
 # requires "ilo_change_password" parameter to be updated in
 # nodes's driver_info with the new password. (integer value)
+{%- if conductor.get('ilo', {}).get('clean_priority_reset_ilo_credential') %}
+clean_priority_reset_ilo_credential = {{ conductor.ilo.clean_priority_reset_ilo_credential }}
+{%- else %}
 #clean_priority_reset_ilo_credential = 30
+{%- endif %}
 
 # Number of times a power operation needs to be retried
 # (integer value)
+{%- if conductor.get('ilo', {}).get('power_retry') %}
+power_retry = {{ conductor.ilo.power_retry }}
+{%- else %}
 #power_retry = 6
+{%- endif %}
 
 # Amount of time in seconds to wait in between power
 # operations (integer value)
+{%- if conductor.get('ilo', {}).get('power_wait') %}
+power_wait = {{ conductor.ilo.power_wait }}
+{%- else %}
 #power_wait = 2
+{%- endif %}
 
 # CA certificate file to validate iLO. (string value)
+{%- if conductor.get('ilo', {}).get('ca_file') %}
+ca_file = {{ conductor.ilo.ca_file }}
+{%- else %}
 #ca_file = <None>
+{%- endif %}
 
 # Default boot mode to be used in provisioning when
 # "boot_mode" capability is not provided in the
@@ -1995,7 +2051,11 @@
 # default boot mode will be selected based on boot mode
 # settings on the system. (string value)
 # Allowed values: auto, bios, uefi
+{%- if conductor.get('ilo', {}).get('default_boot_mode') %}
+default_boot_mode = {{ conductor.ilo.default_boot_mode }}
+{%- else %}
 #default_boot_mode = auto
+{%- endif %}
 
 
 [inspector]
@@ -2232,7 +2292,7 @@
 
 # Authentication URL (string value)
 {%- if ironic.get('identity', {}).get('engine') == 'keystone' %}
-auth_url = {{ ironic.identity.protocol }}://{{ ironic.identity.host }}:{{ ironic.identity.port }}/identity
+auth_url = {{ ironic.identity.protocol }}://{{ ironic.identity.host }}:{{ ironic.identity.port }}
 {%- if ironic.identity.protocol == 'https' %}
 cafile={{ ironic.identity.get('cacert_file', ironic.cacert_file) }}
 {%- endif %}
@@ -2699,7 +2759,7 @@
 
 # Authentication URL (string value)
 {%- if conductor.get('neutron', {}).get('auth_strategy') == 'keystone' %}
-auth_url = {{ conductor.identity.protocol }}://{{ conductor.identity.host }}:{{ conductor.identity.port }}/identity
+auth_url = {{ conductor.identity.protocol }}://{{ conductor.identity.host }}:{{ conductor.identity.port }}
 {%- if conductor.identity.protocol == 'https' %}
 cafile={{ conductor.identity.get('cacert_file', conductor.cacert_file) }}
 {%- endif %}
@@ -3825,11 +3885,10 @@
 {%- endif %}
 
 # Bootfile DHCP parameter for UEFI boot mode. (string value)
+#uefi_pxe_bootfile_name = bootx64.efi
 {%- if ironic.uefi.enabled %}
 {%- if ironic.uefi.pxe_bootfile_name is defined %}
 uefi_pxe_bootfile_name={{ ironic.uefi.pxe_bootfile_name }}
-{%- else %}
-#uefi_pxe_bootfile_name = bootx64.efi
 {%- endif %}
 {%- endif %}
 
@@ -3873,7 +3932,7 @@
 
 # Authentication URL (string value)
 {%- if ironic.get('identity', {}).get('engine') == 'keystone' %}
-auth_url = {{ ironic.identity.protocol }}://{{ ironic.identity.host }}:{{ ironic.identity.port }}/identity
+auth_url = {{ ironic.identity.protocol }}://{{ ironic.identity.host }}:{{ ironic.identity.port }}
 {%- if ironic.identity.protocol == 'https' %}
 cafile={{ ironic.identity.get('cacert_file', ironic.cacert_file) }}
 {%- endif %}
diff --git a/ironic/files/queens/ironic.conf b/ironic/files/queens/ironic.conf
index 0d03817..8a7a949 100644
--- a/ironic/files/queens/ironic.conf
+++ b/ironic/files/queens/ironic.conf
@@ -1586,19 +1586,36 @@
 #
 
 # Timeout (in seconds) for iLO operations (integer value)
+{%- if conductor.get('ilo', {}).get('client_timeout') %}
+client_timeout = {{ conductor.ilo.client_timeout }}
+{%- else %}
 #client_timeout = 60
+{%- endif %}
 
 # Port to be used for iLO operations (port value)
 # Minimum value: 0
 # Maximum value: 65535
+{%- if conductor.get('ilo', {}).get('client_port') %}
+client_port = {{ conductor.ilo.client_port }}
+{%- else %}
 #client_port = 443
+{%- endif %}
+
 
 # The Swift iLO container to store data. (string value)
+{%- if conductor.get('ilo', {}).get('swift_ilo_container') %}
+swift_ilo_container = {{ conductor.ilo.swift_ilo_container }}
+{%- else %}
 #swift_ilo_container = ironic_ilo_container
+{%- endif %}
 
 # Amount of time in seconds for Swift objects to auto-expire.
 # (integer value)
+{%- if conductor.get('ilo', {}).get('swift_object_expiry_timeout') %}
+swift_object_expiry_timeout = {{ conductor.ilo.swift_object_expiry_timeout }}
+{%- else %}
 #swift_object_expiry_timeout = 900
+{%- endif %}
 
 # Set this to True to use http web server to host floppy
 # images and generated boot ISO. This requires http_root and
@@ -1606,40 +1623,78 @@
 # config file. If this is set to False, then Ironic will use
 # Swift to host the floppy images and generated boot_iso.
 # (boolean value)
+{%- if conductor.get('ilo', {}).get('use_web_server_for_images') %}
+use_web_server_for_images = {{ conductor.ilo.use_web_server_for_images }}
+{%- else %}
 #use_web_server_for_images = false
+{%- endif %}
 
 # Priority for reset_ilo clean step. (integer value)
+{%- if conductor.get('ilo', {}).get('clean_priority_reset_ilo') %}
+clean_priority_reset_ilo = {{ conductor.ilo.clean_priority_reset_ilo }}
+{%- else %}
 #clean_priority_reset_ilo = 0
+{%- endif %}
+
 
 # Priority for reset_bios_to_default clean step. (integer
 # value)
 #clean_priority_reset_bios_to_default = 10
+{%- if conductor.get('ilo', {}).get('clean_priority_reset_bios_to_default') %}
+clean_priority_reset_bios_to_default = {{ conductor.ilo.clean_priority_reset_bios_to_default }}
+{%- else %}
+#clean_priority_reset_bios_to_default = 10
+{%- endif %}
 
 # Priority for reset_secure_boot_keys clean step. This step
 # will reset the secure boot keys to manufacturing defaults.
 # (integer value)
+{%- if conductor.get('ilo', {}).get('clean_priority_reset_secure_boot_keys_to_default') %}
+clean_priority_reset_secure_boot_keys_to_default = {{ conductor.ilo.clean_priority_reset_secure_boot_keys_to_default }}
+{%- else %}
 #clean_priority_reset_secure_boot_keys_to_default = 20
+{%- endif %}
 
 # Priority for clear_secure_boot_keys clean step. This step is
 # not enabled by default. It can be enabled to clear all
 # secure boot keys enrolled with iLO. (integer value)
+{%- if conductor.get('ilo', {}).get('clean_priority_clear_secure_boot_keys') %}
+clean_priority_clear_secure_boot_keys = {{ conductor.ilo.clean_priority_clear_secure_boot_keys }}
+{%- else %}
 #clean_priority_clear_secure_boot_keys = 0
+{%- endif %}
 
 # Priority for reset_ilo_credential clean step. This step
 # requires "ilo_change_password" parameter to be updated in
 # nodes's driver_info with the new password. (integer value)
+{%- if conductor.get('ilo', {}).get('clean_priority_reset_ilo_credential') %}
+clean_priority_reset_ilo_credential = {{ conductor.ilo.clean_priority_reset_ilo_credential }}
+{%- else %}
 #clean_priority_reset_ilo_credential = 30
+{%- endif %}
 
 # Number of times a power operation needs to be retried
 # (integer value)
+{%- if conductor.get('ilo', {}).get('power_retry') %}
+power_retry = {{ conductor.ilo.power_retry }}
+{%- else %}
 #power_retry = 6
+{%- endif %}
 
 # Amount of time in seconds to wait in between power
 # operations (integer value)
+{%- if conductor.get('ilo', {}).get('power_wait') %}
+power_wait = {{ conductor.ilo.power_wait }}
+{%- else %}
 #power_wait = 2
+{%- endif %}
 
 # CA certificate file to validate iLO. (string value)
+{%- if conductor.get('ilo', {}).get('ca_file') %}
+ca_file = {{ conductor.ilo.ca_file }}
+{%- else %}
 #ca_file = <None>
+{%- endif %}
 
 # Default boot mode to be used in provisioning when
 # "boot_mode" capability is not provided in the
@@ -1651,7 +1706,11 @@
 # auto - <No description provided>
 # bios - <No description provided>
 # uefi - <No description provided>
+{%- if conductor.get('ilo', {}).get('default_boot_mode') %}
+default_boot_mode = {{ conductor.ilo.default_boot_mode }}
+{%- else %}
 #default_boot_mode = auto
+{%- endif %}
 
 
 [inspector]
@@ -2363,11 +2422,10 @@
 {%- endif %}
 
 # Bootfile DHCP parameter for UEFI boot mode. (string value)
+#uefi_pxe_bootfile_name = bootx64.efi
 {%- if ironic.uefi.enabled %}
 {%- if ironic.uefi.pxe_bootfile_name is defined %}
 uefi_pxe_bootfile_name={{ ironic.uefi.pxe_bootfile_name }}
-{%- else %}
-#uefi_pxe_bootfile_name = bootx64.efi
 {%- endif %}
 {%- endif %}
 
