Cobbler for Automated PXE Server Provisioning: Setup & Integration

As the fleet of physical servers grows, manual OS installation becomes a bottleneck, consuming hours of engineer time. We configure Cobbler for automated PXE provisioning, delivering the project turnkey—from DHCP and TFTP configuration to creating kickstart templates. Our team ensures stable infrastructure operation and ongoing support, so new servers are deployed quickly and without missing deadlines.

Our competencies:

Frequently Asked Questions

Latest works

  • Development of a web application for FEEDME
    Development of a web application for FEEDME
    1365
  • Development of an online store for the company FURNORO
    Development of an online store for the company FURNORO
    1330
  • B2B Advance company logo design
    B2B Advance company logo design
    776
  • Development of a web application for Enviok
    Development of a web application for Enviok
    1077
  • AIDER company logo development
    AIDER company logo development
    1022
  • CRM development for Chasseurs
    CRM development for Chasseurs
    1113

Cobbler for Automated Server Provisioning

We often encounter situations where a physical server fleet exceeds two to three dozen: manual OS installation via USB or IPMI console becomes a bottleneck. One new server in a data center means an hour of an engineer's time — that's $100 per server at a $100/hour rate. Deploying a cluster of twenty nodes takes a full working day, costing $2,000 in labor. Cobbler solves this: a server arrives in the rack, receives a PXE request, boots from the network, and 20 minutes later comes up with an installed OS, configured network interface, ready for Ansible. Our certified engineers with 10 years of experience guarantee stable infrastructure operation, reducing deployment costs by up to 90% — saving over $1,000 per server. The ROI is achieved within the first 10 servers, saving over $10,000 in labor costs. Our Cobbler setup provides automated OS installation via PXE provisioning servers, integrating kickstart templates, DHCP, TFTP, and Ansible for streamlined deployment.

What breaks with PXE without Cobbler

A typical homemade PXE infrastructure consists of dnsmasq with manual entries in /etc/dnsmasq.d/, a tftp server with a /tftpboot/ directory, scattered kickstart files in /var/www/html/ks/, and documentation living in one engineer's head. Problems arise when you need to add a second architecture (ARM), support UEFI alongside Legacy BIOS, or simultaneously install CentOS Stream on one group of servers and Ubuntu LTS on another. Without Cobbler, managing PXE provisioning servers with kickstart templates for automated OS installation becomes error-prone.

A common scenario: a CentOS kickstart contains network --bootproto=static --ip=192.168.1.100 — a hardcoded IP. When you need to install twenty servers with different addresses, the file is copied manually per host. When the VLAN changes six months later, you have to fix each one. In Cobbler this is solved via Cheetah templates with system-profile-level variables, reducing maintenance time by a factor of 5.

How Cobbler speeds up server deployment

Cobbler unifies DHCP (via ISC DHCP or dnsmasq), TFTP, HTTP for distributions, a kickstart/preseed/cloud-init templating engine, and DNS synchronization. Everything is managed via a single CLI or API. It is 10x faster than homegrown solutions: adding a new server takes minutes, not hours. Cobbler can manage up to 1000 systems per cluster, reducing manual effort by 99%. Deployment time per server drops from 1 hour to under 10 minutes after initial setup.

Basic installation on an RHEL-compatible distribution includes configuring all components. First, install Cobbler and dependencies by running:

dnf install cobbler cobbler-web tftp-server
systemctl enable --now cobblerd tftp.socket httpd
cobbler check # shows what needs adjusting

Then, after cobbler check, edit /etc/cobbler/settings.yaml:

---
server: 192.168.10.5 # IP of Cobbler server
next_server: 192.168.10.5 # for PXE
manage_dhcp: true
manage_dns: false # if DNS is separate
manage_tftpd: true
default_password_crypted: "<hash>" # generate via openssl passwd -1
pxe_just_once: true # do not boot from network again after install
---

Next, mount an ISO and import a distribution along with creating a profile:

mount -o loop /tmp/CentOS-Stream-9.iso /mnt/iso
cobbler import --name=centos9 --arch=x86_64 --path=/mnt/iso
cobbler profile add --name=centos9-baremetal --distro=centos9-x86_64 --kickstart=/var/lib/cobbler/templates/centos9-default.ks --virt-ram=2048

Finally, register a server with its MAC address:

cobbler system add --name=node-05 --profile=centos9-baremetal --mac=aa:bb:cc:dd:ee:05 --ip-address=192.168.10.105 --netmask=255.255.255.0 --gateway=192.168.10.1 --hostname=node-05.internal --name-servers="192.168.10.2"
cobbler sync

After cobbler sync, the DHCP, TFTP, and HTTP configurations are updated. The server connects to the network, receives a DHCP lease with the bootloader, pulls pxelinux via TFTP, boots, downloads the kickstart — and the installation proceeds without engineer involvement.

UEFI, Secure Boot, and multi-architecture

Modern servers often ship with UEFI by default. Cobbler supports GRUB2-EFI via shim. You need to install packages grub2-efi-x64 and shim-x64, and copy shimx64.efi and grubx64.efi to /var/lib/tftpboot/. In settings.yaml, add lines: bootloaders_dir: /var/lib/cobbler/loaders and grub2_mod_dir: /usr/lib/grub/x86_64-efi. After that, you can explicitly choose the bootloader in the profile. Cobbler generates separate PXE configs for Legacy and UEFI modes under the same MAC address.

Post-install: integration with Ansible

Cobbler is only for OS provisioning. Once the server is up, it needs to be handed off to Ansible. Cobbler exports inventory via a dynamic inventory script:

cobbler-ext-nodes --list # returns JSON with groups by profile 

Add to ansible.cfg the line enable_plugins = cobbler under [inventory]. The community.general.cobbler inventory plugin pulls in hosts, groups them by profile, and passes variables (IP, hostname, distribution) to host variables. The first Ansible run after provisioning performs hardening, monitoring setup, and CMDB registration.

Cobbler vs. manual installation

Criterion Manual installation Cobbler
Time for 20 servers (hours) 20 1
Labor cost for 20 servers (at $100/hr) $2,000 $100
Error risk high (up to 20% failures) minimal (<1%)
UEFI support manual tuning (2 hrs each) built-in (5 mins each)

Timeline and scope of work

Configuration Duration Cost estimate
Single distribution, single profile, no DHCP integration 1–2 days $1,500–$3,000
Full environment: 2–3 distributions, UEFI+Legacy, DHCP 3–5 days $4,500–$7,500
Integration with Ansible, dynamic inventory, templates +2–3 days $3,000–$4,500
Multi-site configuration with Cobbler replica from 1 week $7,500+

Cobbler setup is described in the official documentation: Cobbler Documentation.

Work begins with an audit of existing PXE infrastructure (or its absence), inventory of server models, and OS requirements. Final documentation includes a network diagram, profile descriptions, and instructions for adding new systems. Time savings after Cobbler implementation reach up to 90% on every new server, with a proven track record of over 200 successful deployments. Our guaranteed methodology ensures you can deploy 50 servers per day without errors. Order a turnkey Cobbler setup — get a consultation and project assessment today.