Not possible to deploy undercloud with ipxe_enabled = false

Bug #1845222 reported by Harald Jensås
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
tripleo
Fix Released
Medium
Bogdan Dobrelya

Bug Description

When setting: ``ipxe_enabled = false`` in undercloud.conf the undercloud deployment fails with.

"puppet-user: Error: Could not set 'present' on ensure: No such file or directory - /var/lib/ironic/tftpboot/pxelinux.cfg/default20190924-16-9d5bk8.lock (file: /etc/puppet/modules/ironic/manifests/inspector.pp, line: 323)",
    "puppet-user: No such file or directory - /var/lib/ironic/tftpboot/pxelinux.cfg/default20190924-16-9d5bk8.lock",
    "puppet-user: Error: /Stage[main]/Ironic::Inspector/File[/var/lib/ironic/tftpboot/pxelinux.cfg/default]/ensure: change from 'absent' to 'present' failed: Could not set 'present' on ensure: No such file or directory - /var/lib/ironic/tftpboot/pxelinux.
cfg/default20190924-16-9d5bk8.lock (file: /etc/puppet/modules/ironic/manifests/inspector.pp, line: 323)",

Revision history for this message
Bogdan Dobrelya (bogdando) wrote :

It seems this case ends up with some untested path for the containerized Ironic.

IIUc, disabling ipxe makes it looking into /var/lib/ironic/tftpboot/pxelinux.cfg
which seems never created because of the missing include ::ironic::pxe. That class normally creates
the required tftpboot/pxelinux.cfg path here https://opendev.org/openstack/puppet-ironic/src/branch/master/manifests/pxe.pp#L93

While we make sure that t-h-t always creates only the base path: https://opendev.org/openstack/tripleo-heat-templates/src/branch/master/deployment/ironic/ironic-conductor-container-puppet.yaml#L582 (note that it doesn't set setype for it, but puppet does)
There is also https://opendev.org/openstack/tripleo-heat-templates/src/branch/master/deployment/ironic/ironic-pxe-container-puppet.yaml#L112 that relies on that base /var/lib/ironic/tftpboot path but never ensures it via its own host_prep_tasks...

So those t-h-t's host_prep_tasks seems inconsistent with that puppet does in https://opendev.org/openstack/puppet-ironic/src/branch/master/manifests/pxe.pp#L79 -> https://opendev.org/openstack/puppet-ironic/src/branch/master/manifests/pxe.pp#L93

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to tripleo-heat-templates (master)

Related fix proposed to branch: master
Review: https://review.opendev.org/684681

Revision history for this message
Bogdan Dobrelya (bogdando) wrote :

Is it the race happens here https://opendev.org/openstack/puppet-tripleo/src/branch/master/manifests/profile/base/ironic/conductor.pp#L45 what only may be executed for the step 4 and creates the required tftpboot/pxelinux.cfg path too late? While it may be accessed earlier (at the step 3 & sync_db) by the "file: /etc/puppet/modules/ironic/manifests/inspector.pp, line: 323", which is prolly called here https://opendev.org/openstack/puppet-tripleo/src/branch/master/manifests/profile/base/ironic_inspector.pp#L78 ?

We need to make sure https://opendev.org/openstack/puppet-ironic/src/branch/master/manifests/pxe.pp#L93 et all also executes for the step 3 & sync_db perhaps

Revision history for this message
Bogdan Dobrelya (bogdando) wrote :
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to puppet-tripleo (master)

Fix proposed to branch: master
Review: https://review.opendev.org/684689

Changed in tripleo:
assignee: nobody → Bogdan Dobrelya (bogdando)
status: Triaged → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Change abandoned on tripleo-heat-templates (master)

Change abandoned by Bogdan Dobrelya (bogdando) (<email address hidden>) on branch: master
Review: https://review.opendev.org/684681

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to puppet-tripleo (master)

Reviewed: https://review.opendev.org/684689
Committed: https://git.openstack.org/cgit/openstack/puppet-tripleo/commit/?id=2f69faf666bcb574d59f7c087ac9bcee98693365
Submitter: Zuul
Branch: master

commit 2f69faf666bcb574d59f7c087ac9bcee98693365
Author: Bogdan Dobrelya <email address hidden>
Date: Wed Sep 25 12:23:50 2019 +0200

    Fix missing PXE directories for Conductor

    When Ironic Conductor class is called, it expects the
    PXE directories exist. That is only the case for the step 4.
    While there is also a case when the conductor class invoked
    for the step 3 & db sync case. For that case also inlcude
    the missing ironic::pxe class to ensure the PXE directories
    created.

    Closes-Bug: #1845222

    Change-Id: I394f56ba9b213c75378bdf21999d23509632523c
    Signed-off-by: Bogdan Dobrelya <email address hidden>

Changed in tripleo:
status: In Progress → Fix Released
Changed in tripleo:
importance: High → Medium
milestone: ussuri-1 → train-rc1
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to puppet-tripleo (stable/stein)

Fix proposed to branch: stable/stein
Review: https://review.opendev.org/688867

tags: added: stein-backport-potential
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Change abandoned on puppet-tripleo (stable/stein)

Change abandoned by Bogdan Dobrelya (bogdando) (<email address hidden>) on branch: stable/stein
Review: https://review.opendev.org/688867

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/puppet-tripleo 11.3.0

This issue was fixed in the openstack/puppet-tripleo 11.3.0 release.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.