# Use http://sequencediagram.org/ to generate image title PXE-based provisioning with Puppet participant User participant "Provisioned Host" as Host participant "Foreman" as Foreman participant "Foreman Proxy" as Proxy participant TFTP participant DHCP participant DNS participant Pulp participant Puppet linear autonumber User->Foreman:clicks on New Host Foreman->Proxy:requests free IP address Proxy->DHCP:reads DHCP cofiguration note over Foreman:pings IP User->Foreman:clicks Submit button in the New host form Foreman->Proxy:creates TFTP configuration Proxy->TFTP:drops TFTP configuration file Foreman->Proxy:OS installer boot files download command Proxy->Pulp:downloads kernel/initram disk Foreman->Proxy:creates DHCP reservation Proxy->DHCP:forwards DHCP reservation Foreman->Proxy:creates DNS records Proxy->DNS:forwards DNS records note over Foreman:host is created (build mode) == Boot into OS installer == User->Host:powers on the machine Host->DHCP:requests the reserved IP and PXE details Host->TFTP:bootloader is downloaded note over Host:bootloader loads Host->TFTP:bootloader gets MAC-based config Host->TFTP:downloads OS installer image/kernel note over Host:OS installer loads Host->Foreman:request Kickstart note over Host:OS is installed Host->Puppet:signs puppet client certificate (puppet agent) Host->Foreman:turns off build mode Foreman->Proxy:sends TFTP removal request Proxy->TFTP:removes TFTP configuration file note over Host:reboots == First boot == Host->DHCP:requests the reserved IP and PXE details Host->TFTP:bootloader is downloaded Host->TFTP:bootloader gets MAC-based config note over Host:bootloader is told to boot from HDD Host->Puppet:sends initial facts Puppet->Foreman:forwards initial facts note over Host:performs initial configuration Host->Puppet:sends initial report Puppet->Foreman:forwards initial report note over Host:in operation