Skip to main content

Primary links

  • Home
  • AI
  • Kubernetes
  • Incus
  • Ansible
  • Terraform
  • OpenStack
  • Virtualization
  • Linux
  • SmartHome
  • HowTo

Misc

  • Linux
  • Hardware
  • Programming
  • Databases
  • Multimedia
  • Windows

Cloud

  • OpenStack
  • cloud-config
  • nextcloud

Virtualization

  • Virtualization
  • Incus
  • Docker
  • KVM
  • Kubernetes
  • LXC
  • LXD
  • QEMU
  • VMware
  • VirtualBox
  • multipass
  • podman
  • vagrant
  • XEN

Network

  • DNS
  • Firewall
  • Linux
  • OpenvSwitch
  • SSL
  • VLAN
  • VPN
  • iPXE
  • namespaces
  • nmcli
  • tcpdump

Storage

  • CEPH
  • DRBD
  • LVM
  • S3
  • ZFS
  • btrfs

Automation / CI/CD

  • Install
  • Ansible
  • GitLab
  • LLM
  • Preseed
  • Puppet
  • Terraform
  • Ubuntu autoinstall

Monitoring / Visualisation

  • Grafana
  • Icinga
  • Prometheus
  • Monitoring
  • ELK
  • mermaid

Deploy OpenStack host with Ironic and Redfish

Define node variables

NODE=com4-dev
NODE_BMC_HOST=com4-dev.ipmi.dev.i.example.com
NODE_MAC_NIC1=00:11:22:33:44:55

Define env variables

NODE_BMC_USER=ADMIN
NODE_BMC_PASS=ADMIN

Create now node with Redfish (pxe device boot broken)
https://docs.openstack.org/ironic/latest/admin/drivers/redfish.html

openstack baremetal node create \
  --name ${NODE} \
  --driver redfish \
  --driver-info redfish_address="https://${NODE_BMC_HOST}" \
  --driver-info redfish_username=${NODE_BMC_USER} \
  --driver-info redfish_password=${NODE_BMC_PASS} \
  --driver-info redfish_verify_ca=false \
  --driver-info redfish_system_id=/redfish/v1/Systems/1

Create now node with IPMI
https://docs.openstack.org/ironic/latest/admin/drivers/ipmitool.html

openstack baremetal node create \
  --name ${NODE} \
  --driver ipmi \
  --driver-info ipmi_address=${NODE_BMC_HOST} \
  --driver-info ipmi_username=${NODE_BMC_USER} \
  --driver-info ipmi_password=${NODE_BMC_PASS}

iPXE
https://docs.openstack.org/ironic/latest/admin/interfaces/boot.html#pxe-boot

openstack baremetal node set ${NODE} \
  --boot-interface ipxe \
  --driver-info deploy_kernel="http://10.33.33.40:8080/ansible_ubuntu.vmlinuz" \
  --driver-info deploy_ramdisk="http://10.33.33.40:8080/ansible_ubuntu.initramfs"

Image
https://docs.openstack.org/ironic/latest/admin/interfaces/boot.html#pxe-boot

ironic / bifrost

# load env
. /opt/stack/bifrost/env-vars

# list nodes
ironic node-list

# remove / shutdown existing node
ironic node-set-provision-state foo.example.com deleted

# load node configuration
export BIFROST_INVENTORY_SOURCE=/opt/openstack-prepare-baremetal/bifrost/json/foo.example.com.json

# add new node
ansible-playbook -i inventory/bifrost_inventory.py enroll-dynamic.yaml
ironic node-update foo.example.com add properties/capabilities='boot_mode:uefi'

# deploy
ansible-playbook -v -i inventory/bifrost_inventory.py deploy-dynamic.yaml

# show node details
ironic node-show foo.example.com

# cli
#ironic node-set-maintenance 00000000-0000-0000-0000-112233445566 on
openstack baremetal node maintenance set ${NODE_UUID}

ironic node-delete 00000000-0000-0000-0000-112233445566
ironic node-list

ironic node-set-power-state  00000000-0000-0000-0000-112233445566 on

ironic node-set-maintenance ${NODE} on
ironic node-delete ${NODE}
ansible-playbook -i inventory/bifrost_inventory.py enroll-dynamic.yaml
ironic node-update ${NODE add properties/capabilities='boot_mode:uefi'
ansible-playbook -i inventory/bifrost_inventory.py deploy-dynamic.yaml

# log (on ironic server)
tail -f /var/log/daemon.log

# show node state
ironic node-show  node1

# rebuild
ironic node-set-provision-state ${NODE} rebuild

Auto update Ubuntu PXE files

Update script
[embed_url: https://raw.githubusercontent.com/panticz/preseed/master/pxe/scripts/update.ubuntu.pxe.files.sh]

Create cronjob
[embed_url: https://raw.githubusercontent.com/panticz/preseed/master/pxe/scripts/update.ubuntu.pxe.files.cronjob]

Configure PXE
wget https://installit.googlecode.com/hg/preseed/preseed.precise.i386.conf -O /var/lib/tftpboot/pxelinux.cfg/preseed.precise.i386.conf
wget https://installit.googlecode.com/hg/preseed/preseed.precise.amd64.conf -O /var/lib/tftpboot/pxelinux.cfg/preseed.precise.amd64.conf
wget https://installit.googlecode.com/hg/preseed/preseed.quantal.i386.conf -O /var/lib/tftpboot/pxelinux.cfg/preseed.quantal.i386.conf
wget https://installit.googlecode.com/hg/preseed/preseed.quantal.amd64.conf -O /var/lib/tftpboot/pxelinux.cfg/preseed.quantal.amd64.conf

vi /var/lib/tftpboot/default
MENU SEPARATOR
MENU BEGIN
MENU TITLE + Preseed
    MENU INCLUDE pxelinux.cfg/preseed.oneiric.i386.conf
    MENU INCLUDE pxelinux.cfg/preseed.oneiric.amd64.conf
    MENU INCLUDE pxelinux.cfg/preseed.precise.i386.conf
    MENU INCLUDE pxelinux.cfg/preseed.precise.amd64.conf
    MENU INCLUDE pxelinux.cfg/preseed.quantal.i386.conf
    MENU INCLUDE pxelinux.cfg/preseed.quantal.amd64.conf

    MENU SEPARATOR
    LABEL Back
    MENU EXIT
MENU END

PXE Net Boot

Config

# default
/tftpboot/pxelinux.cfg/default

Kernel Boot Parameters

vga=791 - set screen resolution to 1024x768
noapic - disable APIC support (on broken motherboards)
textonly - boot to console

update pxelinux.0

cp /usr/lib/syslinux/pxelinux.0 /tftpboot/
cp /usr/lib/syslinux/menu.c32 /tftpboot/

Links
http://www.memtest86.com/ - Memtest86
http://www.memtest.org/ - Memtest86+
http://www.goldmemory.cz/ - GoldMemory
http://people.debian.org/%7Ejoeyh/d-i/images/daily/netboot/ - Debian PXE Instalation

pxe
Profiles GitHub StackOverflow LinkedIn Xing
Contact Imprint
© panticz 2026

Cookie-Einstellungen

Diese Website nutzt eingebettete Inhalte von Drittanbietern (z.B. YouTube, SoundCloud). Beim Laden dieser Inhalte werden Daten an die jeweiligen Anbieter übermittelt. Datenverarbeitungserklärung