diff --git a/guides/common/images/provisioning-image-cloudinit.png b/guides/common/images/provisioning-image-cloudinit.png new file mode 100644 index 00000000000..304e2460979 Binary files /dev/null and b/guides/common/images/provisioning-image-cloudinit.png differ diff --git a/guides/common/images/provisioning-image-finish.png b/guides/common/images/provisioning-image-finish.png new file mode 100644 index 00000000000..aa159787323 Binary files /dev/null and b/guides/common/images/provisioning-image-finish.png differ diff --git a/guides/common/images/provisioning-installer-bootdisk-fullhost.png b/guides/common/images/provisioning-installer-bootdisk-fullhost.png new file mode 100644 index 00000000000..4360a123d72 Binary files /dev/null and b/guides/common/images/provisioning-installer-bootdisk-fullhost.png differ diff --git a/guides/common/images/provisioning-installer-bootdisk-subnet.png b/guides/common/images/provisioning-installer-bootdisk-subnet.png new file mode 100644 index 00000000000..83aefa6f6cb Binary files /dev/null and b/guides/common/images/provisioning-installer-bootdisk-subnet.png differ diff --git a/guides/common/images/provisioning-installer-httpboot.png b/guides/common/images/provisioning-installer-httpboot.png new file mode 100644 index 00000000000..dfee94e7bf6 Binary files /dev/null and b/guides/common/images/provisioning-installer-httpboot.png differ diff --git a/guides/common/images/provisioning-installer-pxeboot.png b/guides/common/images/provisioning-installer-pxeboot.png new file mode 100644 index 00000000000..5792e540e06 Binary files /dev/null and b/guides/common/images/provisioning-installer-pxeboot.png differ diff --git a/guides/common/images/provisioning-template-vmware-userdata.png b/guides/common/images/provisioning-template-vmware-userdata.png new file mode 100644 index 00000000000..6a883a5f9d4 Binary files /dev/null and b/guides/common/images/provisioning-template-vmware-userdata.png differ diff --git a/guides/common/images/user-data-sequence-satellite.txt b/guides/common/images/user-data-sequence-satellite.txt deleted file mode 100644 index 81e7ed197ef..00000000000 --- a/guides/common/images/user-data-sequence-satellite.txt +++ /dev/null @@ -1,16 +0,0 @@ -title VMware Template Provisioning -participant User -participant Satellite -participant vCenter -participant Capsule X - -participant VM - -User --> Satellite:Provision VM in network X -Satellite --> VCenter:Create a VM from a template on port 443 -VCenter --> VM: Clone VM from template -VM --> Capsule X: Call Back to Sat port 80 via Capsule X 8000 -Capsule X --> Satellite: Forward Userdata on port 80 -Satellite --> Satellite: Redirect Userdata to port 443 -VM -->Capsule X: Registers itself to Satellite -Capsule X -->Satellite: Forward VM registration to Satellite diff --git a/guides/image-sources/foreman.pstyle b/guides/image-sources/foreman.pstyle new file mode 100644 index 00000000000..7b166166ff5 --- /dev/null +++ b/guides/image-sources/foreman.pstyle @@ -0,0 +1,48 @@ +' Foreman style for PlantUML diagrams +' This style was created for sequence diagrams and may be incomplete. + +skinparam RoundCorner 8 +skinparam Shadowing false + +' #ffcc32 Foreman yellow +' #025d8c Foreman blue + +skinparam sequence { + ArrowColor #025d8c + LifeLineBorderColor #ecf4f8 + LifeLineBorderThickness 32 + DividerBorderColor #025d8c + DividerFontColor #025d8c + group { + TitleFontColor #025d8c + BorderColor #d2e4ed + FontColor #025d8c + } + groupHeader { + BackgroundColor #d2e4ed + FontColor #025d8c + } +} + +skinparam Actor { + BackgroundColor #025d8c + BorderColor #025d8c + FontColor #025d8c +} + +skinparam Participant { + BackgroundColor #025d8c + BorderColor #025d8c + FontColor White +} + +skinparam Note { + BackgroundColor #d2e4ed + BorderColor #025d8c + FontColor #025d8c +} + +' Puppet enabled=1, disabled=0 +!$puppet = 0 + +autonumber diff --git a/guides/image-sources/prov-create-host-pxe.iuml b/guides/image-sources/prov-create-host-pxe.iuml new file mode 100644 index 00000000000..64b6b35090a --- /dev/null +++ b/guides/image-sources/prov-create-host-pxe.iuml @@ -0,0 +1,16 @@ +User -> Foreman : clicks **Create Host** +Foreman -> Proxy : requests free IP address +Proxy -> DHCP : reads DHCP cofiguration +note over Foreman : pings IP address +User -> Foreman : submits the **Create host** form +group Templates [*PXE* installer boot] + Foreman -> Proxy : renders bootloader configuration files +end +Proxy -> TFTP : deploys bootloader configuration files +Foreman -> Proxy : commands to download installation media +note over Proxy : downloads installation media +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\n(build mode enabled) diff --git a/guides/image-sources/prov-first-local-boot-hdd.iuml b/guides/image-sources/prov-first-local-boot-hdd.iuml new file mode 100644 index 00000000000..fe641e43f2f --- /dev/null +++ b/guides/image-sources/prov-first-local-boot-hdd.iuml @@ -0,0 +1,4 @@ +!if ($networkboot) +Host -> DHCP : requests the reserved IP +!endif +Host -> Host : boots from HDD diff --git a/guides/image-sources/prov-first-local-boot-pxe.iuml b/guides/image-sources/prov-first-local-boot-pxe.iuml new file mode 100644 index 00000000000..3bec0ad7c24 --- /dev/null +++ b/guides/image-sources/prov-first-local-boot-pxe.iuml @@ -0,0 +1,5 @@ +Host -> DHCP : requests the reserved IP and DHCP options +Host -> TFTP : downloads bootloader +Host -> TFTP : gets MAC-based bootloader config +Host -> Host : config tells bootloader to boot from HDD +Host -> Host : boots from HDD diff --git a/guides/image-sources/prov-initial-configuration.iuml b/guides/image-sources/prov-initial-configuration.iuml new file mode 100644 index 00000000000..20277bcc74e --- /dev/null +++ b/guides/image-sources/prov-initial-configuration.iuml @@ -0,0 +1,8 @@ +!if ($puppet) +opt when Puppet enabled + Host -> Puppet : sends CSR + Puppet -> Host : sends certificate (if allowed to) +end +!else +note over Host : initial host configuration\n- remote execution,\n- signs Puppet client cert,\n- runs Ansible roles,\n- etc. +!endif diff --git a/guides/image-sources/prov-installation-media.iuml b/guides/image-sources/prov-installation-media.iuml new file mode 100644 index 00000000000..7ec47b787c3 --- /dev/null +++ b/guides/image-sources/prov-installation-media.iuml @@ -0,0 +1,6 @@ +loop + Host -> Foreman : requests installation media + Foreman -> Proxy : requests installation media + Proxy -> Foreman : provides installation media + Foreman -> Host : provides installation media +end diff --git a/guides/image-sources/provisioning-image-cloudinit.plantuml b/guides/image-sources/provisioning-image-cloudinit.plantuml new file mode 100644 index 00000000000..a7343b6bb89 --- /dev/null +++ b/guides/image-sources/provisioning-image-cloudinit.plantuml @@ -0,0 +1,50 @@ +@startuml + +!include foreman.pstyle + +title Image-based provisioning with cloud-init configuration + +actor User +participant "Provisioned\nInstance" as Host +participant "Foreman" as Foreman +participant "Foreman\nProxy" as Proxy +participant "Infrastructure\nCloud" as Cloud +participant DNS +!if ($puppet) +participant "Puppet\nserver" as Puppet +!endif + +note over Foreman : has an image\nwith the *User Data* flag + +== Create host in Foreman == + +User -> Foreman : clicks **Create Host** +User -> Foreman : selects cloud resource,\nthe image and submits +group Template [cloud-init] + Foreman -> Proxy : renders the cloud-init script +end +Foreman -> Cloud : creates new instance\nwith cloud-init info +Cloud -> Foreman : reports IP address +Foreman -> Proxy : creates DNS records +Proxy -> DNS : forwards DNS records +!if ($puppet) +Foreman -> Proxy : creates Puppet sign request (autosign enabled) +Proxy -> Puppet : forwards Puppet sign request +!endif +Foreman -> Cloud : starts the instance +note over Host : boots up + +== Cloud-init script == + +!include prov-initial-configuration.iuml +Host -> Foreman : calls home\n(disables build mode) + +!if ($puppet) +== First Puppet run == + +!include puppet-run.iuml +!endif + +note over Host : in operation + +@enduml diff --git a/guides/image-sources/provisioning-image-finish.plantuml b/guides/image-sources/provisioning-image-finish.plantuml new file mode 100644 index 00000000000..dfa63ebc517 --- /dev/null +++ b/guides/image-sources/provisioning-image-finish.plantuml @@ -0,0 +1,47 @@ +@startuml + +!include foreman.pstyle + +title Image-based provisioning with Finish script configuration + +actor User +participant "Provisioned\nInstance" as Host +participant "Foreman" as Foreman +participant "Foreman\nProxy" as Proxy +participant "Infrastructure\nCloud" as Cloud +participant DNS +!if ($puppet) +participant "Puppet\nserver" as Puppet +!endif + +note over Foreman : has an image with credentials\ndefined in compute resource + +== Create host in Foreman == + +User -> Foreman : clicks on **Create Host** +User -> Foreman : selects cloud resource, the image and submits +group Template [Finish] + Foreman -> Proxy : renders the Finish script +end +Foreman -> Cloud : creates new instance +Cloud -> Foreman : reports IP address +Foreman -> Proxy : creates DNS records +Proxy -> DNS : forwards DNS records +Foreman -> Cloud : starts the instance +note over Host : boots up +Foreman -> Host : executes Finish script via SSH + +== Finish script == + +!include prov-initial-configuration.iuml +Host -> Foreman : calls home\n(disables build mode) + +!if ($puppet) +== First Puppet run == + +!include puppet-run.iuml +!endif + +note over Host : in operation + +@enduml diff --git a/guides/image-sources/provisioning-installer-bootdisk-fullhost.plantuml b/guides/image-sources/provisioning-installer-bootdisk-fullhost.plantuml new file mode 100644 index 00000000000..4a3ac3c3130 --- /dev/null +++ b/guides/image-sources/provisioning-installer-bootdisk-fullhost.plantuml @@ -0,0 +1,66 @@ +@startuml + +!include foreman.pstyle +!$networkboot = 0 + +title Installer-based provisioning with full-host bootdisk + +actor User +participant "Provisioned\nHost" as Host +participant "Foreman" as Foreman +participant "Foreman\nProxy" as Proxy +'participant "Pulp\n(Katello)" as Pulp +'participant TFTP +'participant DHCP +participant DNS +!if ($puppet) +participant "Puppet\nserver" as Puppet +!endif + +note over Host : powered off + +== Create host in Foreman == + +User -> Foreman : clicks **Create Host** +User -> Foreman : assigns static IP address +User -> Foreman : submits the **Create host** form +group Templates [*PXE* installer boot] + Foreman -> Proxy : renders bootloader configuration files +end +Proxy -> Proxy : deploys bootloader configuration files +Foreman -> Proxy : commands to download installation media +note over Proxy : downloads installation media +Foreman -> Proxy : creates DNS records +Proxy -> DNS : forwards DNS records +note over Foreman : host is created\n(build mode enabled) + +User -> Foreman : downloads the bootdisk ISO of the host +note over User : writes the bootdisk ISO\nto a USB/CD/DVD drive + +== Boot into OS installer == + +User -> Host : configures the machine to boot\nfrom the USB/CD/DVD drive +User -> Host : powers on the machine +Host -> Host : uses IP from the bootdisk +note over Host : boots from the USB/CD/DVD drive +note over Host : loads OS installer +User -> Host : eliminates the USB/CD/DVD drive\n(too soon?) +!include prov-installation-media.iuml +note over Host : OS is installed +!include prov-initial-configuration.iuml +Host -> Foreman : calls home\n(disables build mode) +note over Host : reboots + +== First local boot == + +!include prov-first-local-boot-hdd.iuml + +!if ($puppet) +== First Puppet run == + +!include puppet-run.iuml +!endif + +note over Host : in operation + +@enduml diff --git a/guides/image-sources/provisioning-installer-bootdisk-subnet.plantuml b/guides/image-sources/provisioning-installer-bootdisk-subnet.plantuml new file mode 100644 index 00000000000..af995127095 --- /dev/null +++ b/guides/image-sources/provisioning-installer-bootdisk-subnet.plantuml @@ -0,0 +1,60 @@ +@startuml + +!include foreman.pstyle +!$networkboot = 1 + +title Installer-based provisioning with subnet bootdisk + +actor User +participant "Provisioned\nHost" as Host +participant "Foreman" as Foreman +participant "Foreman\nProxy" as Proxy +'participant "Pulp\n(Katello)" as Pulp +'participant TFTP +participant DHCP +participant DNS +!if ($puppet) +participant "Puppet\nserver" as Puppet +!endif + +note over Host : powered off + +User -> Foreman : downloads the bootdisk of the subnet +note over User : writes the bootdisk\nto a USB/CD/DVD drive + +== Boot into OS installer == + +User -> Host : configures the machine to boot\nfrom the USB/CD/DVD drive +User -> Host : powers on the machine +Host -> DHCP : requests the reserved IP +note over Host : boots from the USB/CD/DVD drive +note over Host : bootloader loads +User -> Host : eliminates the USB/CD/DVD drive\n(too soon?) +Host -> Proxy : gets MAC-based bootloader config +Host -> Proxy : downloads OS installer kernel\nand initial RAM disk +note over Host : OS installer loads +Host -> Proxy : requests installer configuration +group Template [Provision] + Proxy -> Proxy : renders installer configuration +end +Proxy -> Host : gets installer configuration +!include prov-installation-media.iuml +note over Host : OS is installed +!include prov-initial-configuration.iuml +Host -> Foreman : calls home\n(disables build mode) + +note over Host : reboots + +== First local boot == + +!include prov-first-local-boot-hdd.iuml + +!if ($puppet) +== First Puppet run == + +!include puppet-run.iuml +!endif + +note over Host : in operation + +@enduml diff --git a/guides/image-sources/provisioning-installer-httpboot.plantuml b/guides/image-sources/provisioning-installer-httpboot.plantuml new file mode 100644 index 00000000000..4c8d61a0536 --- /dev/null +++ b/guides/image-sources/provisioning-installer-httpboot.plantuml @@ -0,0 +1,61 @@ +@startuml + +!include foreman.pstyle + +title Installer-based provisioning with HTTP boot + +actor User +participant "Provisioned\nHost" as Host +participant "Foreman" as Foreman +participant "Foreman\nProxy" as Proxy +'participant "Pulp\n(Katello)" as Pulp +participant TFTP +participant DHCP +participant DNS +!if ($puppet) +participant "Puppet\nserver" as Puppet +!endif + +note over Host : powered off + +== Create host in Foreman == + +!include prov-create-host-pxe.iuml + +== Boot into OS installer == + +User -> Host : powers on the machine +Host -> DHCP : requests the reserved IP and DHCP options +Host -> Proxy : downloads bootloader +note over Host : bootloader loads +Host -> Proxy : gets MAC-based bootloader config +Host -> Proxy : downloads OS installer kernel\nand initial RAM disk +note over Host : OS installer loads +Host -> Proxy : requests installer configuration +group Template [Provision] + Proxy -> Proxy : renders installer configuration +end +Proxy -> Host : receives installer configuration +!include prov-installation-media.iuml +note over Host : OS is installed +!include prov-initial-configuration.iuml +Host -> Foreman : calls home\n(disables build mode) +group Templates [*PXE* local boot] + Foreman -> Proxy : renders bootloader configuration files +end +Proxy -> TFTP : deploys bootloader configuration files +note over Host : reboots + +== First local boot == + +!include prov-first-local-boot-pxe.iuml + +!if ($puppet) +== First Puppet run == + +!include puppet-run.iuml +!endif + +note over Host : in operation + +@enduml diff --git a/guides/image-sources/provisioning-installer-pxeboot.plantuml b/guides/image-sources/provisioning-installer-pxeboot.plantuml new file mode 100644 index 00000000000..2a7d6a5cfe0 --- /dev/null +++ b/guides/image-sources/provisioning-installer-pxeboot.plantuml @@ -0,0 +1,61 @@ +@startuml + +!include foreman.pstyle + +title Installer-based provisioning with PXE boot + +actor User +participant "Provisioned\nHost" as Host +participant "Foreman" as Foreman +participant "Foreman\nProxy" as Proxy +'participant "Pulp\n(Katello)" as Pulp +participant TFTP +participant DHCP +participant DNS +!if ($puppet) +participant "Puppet\nserver" as Puppet +!endif + +note over Host : powered off + +== Create host in Foreman == + +!include prov-create-host-pxe.iuml + +== Boot into OS installer == + +User -> Host : powers on the machine +Host -> DHCP : requests the reserved IP and PXE details +Host -> TFTP : downloads bootloader +note over Host : bootloader loads +Host -> TFTP : gets MAC-based config for bootloader +Host -> TFTP : downloads OS installer kernel and init RAM disk +note over Host : OS installer loads +Host -> Proxy : requests installer configuration +group Template [Provision] + Proxy -> Proxy : renders installer configuration +end +Proxy -> Host : receives installer configuration, such as a Kickstart file +!include prov-installation-media.iuml +note over Host : OS is installed +!include prov-initial-configuration.iuml +Host -> Foreman : calls home\n(disables build mode) +group Templates [*PXE* local boot] + Foreman -> Proxy : renders bootloader configuration files +end +Proxy -> TFTP : deploys bootloader configuration files +note over Host : reboots + +== First local boot == + +!include prov-first-local-boot-pxe.iuml + +!if ($puppet) +== First Puppet run == + +!include puppet-run.iuml +!endif + +note over Host : in operation + +@enduml diff --git a/guides/image-sources/provisioning-template-vmware-userdata.plantuml b/guides/image-sources/provisioning-template-vmware-userdata.plantuml new file mode 100644 index 00000000000..7bece2daa92 --- /dev/null +++ b/guides/image-sources/provisioning-template-vmware-userdata.plantuml @@ -0,0 +1,22 @@ +@startuml + +!include foreman.pstyle + +title VMware template provisioning with user data + +actor User +participant Foreman +participant "Foreman\nProxy X" as Proxy +participant "Virtual\nmachine" as VM +participant "VMware\nvCenter" as vCenter + +User -> Foreman : Provisions VM\nin network X +Foreman -> vCenter : Creates a VM from a template on port 443 +vCenter -> VM : Clones VM from template +VM -> Proxy : Calls back\nto Foreman port 80\nvia Proxy X 8000 +Proxy -> Foreman : Forwards Userdata on port 80 +Foreman -> Foreman : Redirects Userdata to port 443 +VM -> Proxy : Registers +Proxy -> Foreman : Forwards VM registration to Foreman + +@enduml diff --git a/guides/image-sources/puppet-run.iuml b/guides/image-sources/puppet-run.iuml new file mode 100644 index 00000000000..1d78223c7fe --- /dev/null +++ b/guides/image-sources/puppet-run.iuml @@ -0,0 +1,8 @@ +Host -> Puppet : sends facts +Host -> Puppet : requests catalog +Puppet -> Foreman : forwards facts +Puppet -> Foreman : requests ENC +Puppet -> Host : responds with requested catalog +note over Host : runs catalog +Host -> Puppet : sends report +Puppet -> Foreman : forwards report