diff --git a/defaults/main.yml b/defaults/main.yml index a3cc0259..4cf45491 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -241,6 +241,10 @@ ironic_pip_packages: - sushy - systemd-python +# ipmitool-socat console settings +ironic_socat_bind_address: "{{ openstack_service_bind_address | default('0.0.0.0') }}" +ironic_socat_port_range: "10000:10099" + # Specific pip packages provided by the user for the ironic service ironic_user_pip_packages: [] diff --git a/releasenotes/notes/ipmitool-socat-console-5b99db22de49aefd.yaml b/releasenotes/notes/ipmitool-socat-console-5b99db22de49aefd.yaml new file mode 100644 index 00000000..ca55875f --- /dev/null +++ b/releasenotes/notes/ipmitool-socat-console-5b99db22de49aefd.yaml @@ -0,0 +1,9 @@ +--- +features: + - | + If the ``ironic_drivers_enabled`` variable from the os_ironic role includes + a driver which uses the ``ipmitool-socat`` console interface, that interface is + now enabled automatically in the ``ironic.conf`` ``enabled_console_interfaces`` + config option. New variables ``ironic_socat_bind_address`` and + ``ironic_socat_port_range`` are added to support further customisation of the + serial console data flow. diff --git a/templates/ironic.conf.j2 b/templates/ironic.conf.j2 index df339a4b..81caa164 100644 --- a/templates/ironic.conf.j2 +++ b/templates/ironic.conf.j2 @@ -23,6 +23,7 @@ enabled_deploy_interfaces = {{ filtered_ironic_drivers | json_query('[*].deploy' enabled_inspect_interfaces = {{ filtered_ironic_drivers | json_query('[*].inspect') | unique | join(',') }} enabled_management_interfaces = {{ filtered_ironic_drivers | json_query('[*].management') | unique | join(',') }} enabled_power_interfaces = {{ filtered_ironic_drivers | json_query('[*].power') | unique | join(',') }} +enabled_console_interfaces = {{ filtered_ironic_drivers | json_query('[*].console') | unique | join(',') }} [agent] @@ -38,6 +39,10 @@ sync_power_state_interval = {{ ironic_sync_power_state_interval }} automated_clean = {{ ironic_automated_clean }} [console] +{% if 'ipmitool-socat' in (filtered_ironic_drivers | json_query('[*].console') | unique) %} +socat_address = {{ ironic_socat_bind_address }} +port_range = "{{ ironic_socat_port_range }}" +{% endif %} [cors] diff --git a/vars/main.yml b/vars/main.yml index aa21a91c..d5d4a816 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -27,6 +27,7 @@ ironic_driver_types: inspect: ilo management: ilo power: ilo + console: ilo agent_ipmitool: hardware_type: ipmi boot: pxe @@ -34,6 +35,7 @@ ironic_driver_types: inspect: inspector management: ipmitool power: ipmitool + console: no-console agent_ipmitool_socat: hardware_type: ipmi boot: pxe @@ -41,6 +43,7 @@ ironic_driver_types: inspect: inspector management: ipmitool power: ipmitool + console: ipmitool-socat agent_irmc: hardware_type: irmc boot: irmc-virtual-media @@ -48,6 +51,7 @@ ironic_driver_types: inspect: irmc management: irmc power: irmc + console: ipmitool-socat pxe_drac: hardware_type: idrac boot: pxe @@ -55,6 +59,7 @@ ironic_driver_types: inspect: idrac management: idrac power: idrac + console: no-console pxe_drac_inspector: hardware_type: idrac boot: pxe @@ -62,6 +67,7 @@ ironic_driver_types: inspect: inspector management: idrac power: idrac + console: no-console pxe_ilo: hardware_type: ilo boot: ilo-pxe @@ -69,6 +75,7 @@ ironic_driver_types: inspect: ilo management: ilo power: ilo + console: ilo pxe_ipmitool: hardware_type: ipmi boot: pxe @@ -76,6 +83,7 @@ ironic_driver_types: inspect: inspector management: ipmitool power: ipmitool + console: no-console pxe_ipmitool_socat: hardware_type: ipmi boot: pxe @@ -83,6 +91,7 @@ ironic_driver_types: inspect: inspector management: ipmitool power: ipmitool + console: ipmitool-socat pxe_irmc: hardware_type: irmc boot: irmc-pxe @@ -90,6 +99,7 @@ ironic_driver_types: inspect: irmc management: irmc power: irmc + console: ipmitool-socat pxe_snmp: hardware_type: snmp boot: pxe @@ -97,6 +107,7 @@ ironic_driver_types: inspect: no-inspect management: fake power: snmp + console: no-console ironic_packages_list: > {%- set package_list = [] %} @@ -117,6 +128,9 @@ ironic_packages_list: > {%- if ironic_inspector_boot_mode == "http" %} {%- set package_list = package_list + ironic_inspector_http_distro_packages %} {%- endif %} + {%- if 'ipmitool-socat' in (filtered_ironic_drivers | json_query('[*].console') | unique) %} + {% set package_list = package_list + ironic_ipmitool_socat_distro_packages %} + {%- endif %} {{- package_list -}} ironic_service_user_list: > @@ -295,3 +309,6 @@ ironic_venv_packages: |- {%- set _ = pkg_list.extend(ironic_inspector_user_pip_packages) %} {%- endif %} {{- pkg_list | unique }} + +ironic_ipmitool_socat_distro_packages: + - socat