This is very very likely an issue with the vendor's firmware. We've seen some instances where the bmc refuses to honor the request to change *or* where it is honored for a single boot operation only. In part some of this may be due to improved support in handling UEFI boot signaling where the wrong thing could occur, at least with IPMI.
In order to create a fix or workaround, we need the following information:
Are you using IPMI or Redfish? If your using IPMI, you should consider using Redfish.
What is the hardware vendor?
What is the BMC firmware version?
Is the BMC set to always network boot by default completely?
In UEFI, what does the machine report for the efibootmgr output. Your deployment agent logs actually have this output already in the journal. Typically /var/log/ironic/deploy_logs. We've seen some hardware act completely disjointed from the EFI NVRAM, or where it resets the EFI NVRAM when we request a one time override.
Most importantly, what is the version of ironic and ironic-python-agent?