diff --git a/doc/source/user/troubleshooting.rst b/doc/source/user/troubleshooting.rst index 1779b2d14..fa2396bad 100644 --- a/doc/source/user/troubleshooting.rst +++ b/doc/source/user/troubleshooting.rst @@ -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 diff --git a/playbooks/inventory/group_vars/baremetal b/playbooks/inventory/group_vars/baremetal index ed121f167..e3c4773a4 100644 --- a/playbooks/inventory/group_vars/baremetal +++ b/playbooks/inventory/group_vars/baremetal @@ -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 diff --git a/playbooks/inventory/group_vars/localhost b/playbooks/inventory/group_vars/localhost index 94ba9e80e..eb3ce355c 100644 --- a/playbooks/inventory/group_vars/localhost +++ b/playbooks/inventory/group_vars/localhost @@ -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 diff --git a/playbooks/inventory/group_vars/target b/playbooks/inventory/group_vars/target index 94ba9e80e..eb3ce355c 100644 --- a/playbooks/inventory/group_vars/target +++ b/playbooks/inventory/group_vars/target @@ -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 diff --git a/playbooks/roles/bifrost-configdrives-dynamic/defaults/main.yml b/playbooks/roles/bifrost-configdrives-dynamic/defaults/main.yml index 36357c57b..75493115b 100644 --- a/playbooks/roles/bifrost-configdrives-dynamic/defaults/main.yml +++ b/playbooks/roles/bifrost-configdrives-dynamic/defaults/main.yml @@ -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" diff --git a/playbooks/roles/bifrost-deploy-nodes-dynamic/defaults/main.yml b/playbooks/roles/bifrost-deploy-nodes-dynamic/defaults/main.yml index 1dd160701..c122a0860 100644 --- a/playbooks/roles/bifrost-deploy-nodes-dynamic/defaults/main.yml +++ b/playbooks/roles/bifrost-deploy-nodes-dynamic/defaults/main.yml @@ -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 diff --git a/playbooks/roles/bifrost-ironic-install/defaults/main.yml b/playbooks/roles/bifrost-ironic-install/defaults/main.yml index 9829fb7ce..bfe435009 100644 --- a/playbooks/roles/bifrost-ironic-install/defaults/main.yml +++ b/playbooks/roles/bifrost-ironic-install/defaults/main.yml @@ -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" diff --git a/playbooks/roles/bifrost-ironic-install/templates/ironic.conf.j2 b/playbooks/roles/bifrost-ironic-install/templates/ironic.conf.j2 index 91f54f4d4..15f8d5ec4 100644 --- a/playbooks/roles/bifrost-ironic-install/templates/ironic.conf.j2 +++ b/playbooks/roles/bifrost-ironic-install/templates/ironic.conf.j2 @@ -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 %} diff --git a/playbooks/roles/bifrost-keystone-install/defaults/main.yml b/playbooks/roles/bifrost-keystone-install/defaults/main.yml index cdce331b6..d7fe05fdf 100644 --- a/playbooks/roles/bifrost-keystone-install/defaults/main.yml +++ b/playbooks/roles/bifrost-keystone-install/defaults/main.yml @@ -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: diff --git a/releasenotes/notes/httpboot-f3891f6343c96914.yaml b/releasenotes/notes/httpboot-f3891f6343c96914.yaml new file mode 100644 index 000000000..0561efa75 --- /dev/null +++ b/releasenotes/notes/httpboot-f3891f6343c96914.yaml @@ -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. diff --git a/scripts/collect-test-info.sh b/scripts/collect-test-info.sh index 1becd0100..980cc5b0d 100755 --- a/scripts/collect-test-info.sh +++ b/scripts/collect-test-info.sh @@ -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