Skip to content

Commit a7c13ad

Browse files
committed
ironic: always enable conductor HTTP server
In the Xena release, Ironic removed the iSCSI driver [1]. The recommended driver is direct, which uses HTTP to transfer the disk image. This requires an HTTP server, and the simplest option is to use the one currently deployed when enable_ironic_ipxe is set to true. For this reason, this patch always enables the HTTP server running on the conductor. iPXE is still enabled separately, since it cannot currently be used at the same time as PXE. Backport note: Ironic made direct the default in Wallaby. This Wallaby backport ensures that the defaults in Kolla & Ironic may work together. [1] https://review.opendev.org/c/openstack/ironic/+/789382 Change-Id: I30c2ad2bf2957ac544942aefae8898cdc8a61ec6 (cherry picked from commit 411668e)
1 parent 9ef2526 commit a7c13ad

File tree

4 files changed

+35
-6
lines changed

4 files changed

+35
-6
lines changed

ansible/roles/ironic/defaults/main.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,9 @@ ironic_services:
6464
ironic-ipxe:
6565
container_name: ironic_ipxe
6666
group: ironic-ipxe
67-
enabled: "{{ enable_ironic_ipxe | bool }}"
67+
# NOTE(mgoddard): This container is always enabled, since may be used by
68+
# the direct deploy driver.
69+
enabled: true
6870
image: "{{ ironic_pxe_image_full }}"
6971
volumes: "{{ ironic_ipxe_default_volumes + ironic_ipxe_extra_volumes }}"
7072
dimensions: "{{ ironic_ipxe_dimensions }}"

ansible/roles/ironic/templates/ironic.conf.j2

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,15 +184,18 @@ deploy_logs_collect = always
184184
[pxe]
185185
pxe_append_params = nofb nomodeset vga=normal console=tty0 console=ttyS0,{{ ironic_console_serial_speed }}
186186
{% if enable_ironic_ipxe | bool %}
187+
{# NOTE(mgoddard): iPXE uses the TFTP image cache (tftp_master_path, default
188+
/tftpboot/master_images), in which images get hard linked to the http_root
189+
directory (/httpboot). These must be on the same device, but /httpboot and
190+
/tftpboot live in separate Docker volumes. Override the default paths for
191+
iPXE to place them both in /httpboot. This prevents mixing PXE and iPXE. #}
187192
tftp_root = /httpboot
188193
tftp_master_path = /httpboot/master_images
189194
tftp_server = {{ api_interface_address }}
190195
{% endif %}
191196

192-
{% if enable_ironic_ipxe | bool %}
193197
[deploy]
194198
http_url = {{ ironic_ipxe_url }}
195-
{% endif %}
196199

197200
[oslo_middleware]
198201
enable_proxy_headers_parsing = True

doc/source/reference/bare-metal/ironic-guide.rst

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,11 @@ true in ``/etc/kolla/globals.yml``:
7474

7575
.. code-block:: yaml
7676
77-
enable_ironic_ipxe: "yes"
77+
enable_ironic_ipxe: "yes"
7878
79-
This will enable deployment of a docker container, called ironic_ipxe, running
80-
the web server which iPXE uses to obtain it's boot images.
79+
When iPXE booting is enabled, the ``ironic_ipxe`` container is used to serve
80+
the iPXE boot images as described below. Regardless of the setting above, the
81+
same container is used to support the ``direct`` deploy interface.
8182

8283
The port used for the iPXE webserver is controlled via ``ironic_ipxe_port`` in
8384
``/etc/kolla/globals.yml``:
@@ -95,6 +96,17 @@ The following changes will occur if iPXE booting is enabled:
9596
environment. You may also boot directly to iPXE by some other means e.g by
9697
burning it to the option rom of your ethernet card.
9798

99+
Note that due to a limitation in Kolla Ansible, PXE and iPXE cannot be used
100+
together in a single deployment.
101+
102+
In order to enable the iPXE driver in Ironic, set the ``[DEFAULT]
103+
enabled_boot_interfaces`` option in ``/etc/kolla/config/ironic.conf``:
104+
105+
.. code-block:: yaml
106+
107+
[DEFAULT]
108+
enabled_boot_interfaces = ipxe
109+
98110
Attach ironic to external keystone (optional)
99111
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
100112
In :kolla-ansible-doc:`multi-regional <user/multi-regions.html>` deployment
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
upgrade:
3+
- |
4+
An HTTP server is now always deployed for Ironic conductor, while
5+
previously it was only deployed when iPXE is enabled.
6+
7+
In the Wallaby release, Ironic changed the default deploy driver from
8+
iSCSI to direct. In the Xena release, Ironic removed the iSCSI driver.
9+
The recommended deploy driver is ``direct``, which uses HTTP to
10+
transfer the disk image.
11+
This requires an HTTP server, and the simplest option is to use the one
12+
previously deployed when ``enable_ironic_ipxe`` is set to ``true``.

0 commit comments

Comments
 (0)