Move /httpboot to /var/lib/ironic

There is no guarantee that /var is not on a separate filesystem. Also
we should not pollute the root directory with our stuff.

The TFTP directory /tftpboot is left where it is, since it needs to be
accessed by dnsmasq. We may consider moving it later on.

Removes the wildly outdated statement about purging the image cache
from the documentation.

Change-Id: Ib1e46e7a9c5eec193082858614026ca4c9f537ac
This commit is contained in:
Dmitry Tantsur 2021-12-22 17:39:58 +01:00
parent d1ad4f6050
commit 779e4d8a1c
11 changed files with 26 additions and 33 deletions

View File

@ -34,19 +34,6 @@ Example error::
NodeLocked: Node 00000000-0000-0000-0000-046ebb96ec21 is locked by
host $HOSTNAME, please retry after the current operation is completed.
*****************************************************
New image appears not to be deploying upon deployment
*****************************************************
When deploying a new image with the same previous name, it is necessary to
purge the contents of the TFTP master_images folder which caches the image
file for deployments. The default location for this folder is
``/tftpboot/master_images``.
Additionally, a playbook has been included that can be used prior to a
re-installation to ensure fresh images are deployed. This playbook can
be found at ``playbooks/cleanup-deployment-images.yaml``.
*********************
Building an IPA image
*********************
@ -74,11 +61,7 @@ use to create an IPA image for Bifrost are the same as for ironic. See:
https://docs.openstack.org/ironic/latest/install/deploy-ramdisk.html
Once your build is completed, you will need to copy the images files into
the ``/httpboot`` folder.
Since you have updated the image to be deployed, you will need to purge the
contents of ``/tftpboot/master_images`` for the new image to be utilized for
the deployment process.
the ``/var/lib/ironic/httpboot`` folder.
*********************************************
Unexpected/Unknown failure with the IPA Agent

View File

@ -33,7 +33,7 @@ testing_user: root
# If this setting is changed, it must be applied to both the baremetal
# and localhost groups. Presently the role defaults are set to the value
# below.
# http_boot_folder: /httpboot
# http_boot_folder: /var/lib/ironic/httpboot
# The settings for the name of the image to be deployed along with the
# on disk location are below. If changed, these settings must be applied

View File

@ -40,7 +40,7 @@ mysql_password:
# If this setting is changed, it must be applied to both the baremetal
# and localhost groups. Presently the role defaults are set to the value
# below.
# http_boot_folder: /httpboot
# http_boot_folder: /var/lib/ironic/httpboot
# The settings for the name of the image to be deployed along with the
# on disk location are below. If changed, these settings must be applied

View File

@ -40,7 +40,7 @@ mysql_password:
# If this setting is changed, it must be applied to both the baremetal
# and localhost groups. Presently the role defaults are set to the value
# below.
# http_boot_folder: /httpboot
# http_boot_folder: /var/lib/ironic/httpboot
# The settings for the name of the image to be deployed along with the
# on disk location are below. If changed, these settings must be applied

View File

@ -4,7 +4,7 @@
# such that cirros will receive basic network configuration when
# performing basic testing.
write_interfaces_file: false
http_boot_folder: /httpboot
http_boot_folder: /var/lib/ironic/httpboot
# Default location to the ssh public key for the user operating Bifrost.
#ssh_public_key_path: "/path/to/id_rsa.pub"

View File

@ -4,7 +4,7 @@ file_url_port: "8080"
network_interface: "virbr0"
ans_network_interface: "{{ network_interface | replace('-', '_') }}"
internal_ip: "{{ hostvars[inventory_hostname]['ansible_' + ans_network_interface]['ipv4']['address'] }}"
http_boot_folder: "/httpboot"
http_boot_folder: "/var/lib/ironic/httpboot"
deploy_image_filename: "deployment_image.qcow2"
deploy_image: "{{http_boot_folder}}/{{deploy_image_filename}}"
inventory_dhcp: false

View File

@ -10,7 +10,7 @@ cleaning_disk_erase: false
fast_track: true
tftp_boot_folder: /tftpboot
http_boot_folder: /httpboot
http_boot_folder: /var/lib/ironic/httpboot
ironic_tftp_master_path: /var/lib/ironic/master_images
staging_drivers_include: false
file_url_port: "8080"

View File

@ -66,7 +66,7 @@ deploy_logs_local_path = {{ ironic_agent_deploy_logs_local_path }}
[pxe]
kernel_append_params = {{ pxe_kernel_params }}
tftp_server = {{ internal_ip }}
tftp_root = /tftpboot
tftp_root = {{ tftp_boot_folder }}
ipxe_fallback_script = pxelinux.cfg/default
tftp_master_path = {{ ironic_tftp_master_path }}
{% if enable_uefi_ipxe | bool %}

View File

@ -38,11 +38,6 @@ internal_ip: "{{ hostvars[inventory_hostname]['ansible_' + ans_network_interface
api_protocol: "{{ 'https' if enable_tls | bool else 'http' }}"
keystone_api_url: "{{ api_protocol }}://{{ internal_ip }}:5000/v3"
# Defaults required by this role that are normally inherited via
# other roles.
file_url_port: 8080
http_boot_folder: /httpboot
# Settings related to installing bifrost in a virtual environment
bifrost_venv_dir: "{{ lookup('env', 'VENV') or '/opt/stack/bifrost' }}"
bifrost_venv_env:

View File

@ -0,0 +1,15 @@
---
upgrade:
- |
The location of the HTTP boot directory has been changed to
``/var/lib/ironic/httpboot``. Please avoid running cleanings or deployments
during the upgrade, otherwise PXE booting may fail until Ironic rebuilds
the iPXE configuration.
Any custom images will not be migrated from the old location ``/httpboot``,
please migrate them manually if needed. You may remove the old location
after the upgrade.
fixes:
- |
Makes sure the image cache directories are on the same filesystem as
the PXE/HTTP directories to avoid the "Invalid cross-device link" error.

View File

@ -82,9 +82,9 @@ sudo journalctl -u uwsgi@keystone-public &> ${LOG_LOCATION}/keystone-public.log
# Copy PXE information
mkdir -p ${LOG_LOCATION}/pxe/
ls -lR /httpboot > ${LOG_LOCATION}/pxe/listing.txt
cp -aL /httpboot/*.ipxe ${LOG_LOCATION}/pxe/
cp -aL /httpboot/pxelinux.cfg/ ${LOG_LOCATION}/pxe/
ls -lR /var/lib/ironic/httpboot > ${LOG_LOCATION}/pxe/listing.txt
cp -aL /var/lib/ironic/httpboot/*.ipxe ${LOG_LOCATION}/pxe/
cp -aL /var/lib/ironic/httpboot/pxelinux.cfg/ ${LOG_LOCATION}/pxe/
# Copy baremetal information
source $HOME/openrc bifrost