Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add diagram of installer-based provisioning with HTTP boot #3305

Draft
wants to merge 3 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
48 changes: 48 additions & 0 deletions guides/image-sources/foreman.pstyle
Original file line number Diff line number Diff line change
@@ -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 = 1

autonumber
17 changes: 17 additions & 0 deletions guides/image-sources/prov-create-host-pxe.iuml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
User -> Foreman : create host action
Foreman -> Proxy : request a free IP address
Proxy -> DHCP : search for a free IP in DHCP
DHCP -> Proxy : return the free IP
Proxy -> Foreman : pass the free IP
group Templates [*PXE* installer boot]
Foreman -> Proxy : render boot-loader configuration files
end
Proxy -> TFTP : deploy boot-loader configuration files\nto ""/var/lib/tftpboot""
Foreman -> Proxy : command to download installer kernel\nand initial RAM disk
Proxy -> TFTP : download kernel and initial RAM disk
Foreman -> Proxy : request DHCP reservation
Proxy -> DHCP : create DHCP reservation
Foreman -> Proxy : create DNS records
Proxy -> DNS : forward DNS records
Proxy -> Foreman : report status of TFTP, DHCP & DNS
Foreman -> User : host is created\n(build mode enabled)
4 changes: 4 additions & 0 deletions guides/image-sources/prov-first-local-boot-pxe.iuml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Host -> DHCP : request reserved IP and DHCP options
Host -> TFTP : download boot loader
TFTP -> Host : provide MAC-based boot-loader config
Host -> Host : boot from HDD
8 changes: 8 additions & 0 deletions guides/image-sources/prov-initial-configuration.iuml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
!if ($puppet)
opt when Puppet enabled
Host -> Host : install Puppet agent
Host -> Puppet : send CSR
Puppet -> Host : send certificate (if allowed to)
end
!endif
Host -> Host : configure\n- Subscription Manager,\n- remote execution,\n- run Ansible roles,\n- etc.
6 changes: 6 additions & 0 deletions guides/image-sources/prov-installation-media.iuml
Original file line number Diff line number Diff line change
@@ -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
61 changes: 61 additions & 0 deletions guides/image-sources/provisioning-installer-httpboot.plantuml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
@startuml

!include foreman.pstyle

title Installer-based provisioning with HTTP boot on bare metal
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this diagram describe the HTTP boot feature or iPXE boot over the HTTP?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because to me, this is the same as the #3304, except the tftp/http.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

HTTP boot feature.


actor User
participant "Provisioned\nHost" as Host
participant "Foreman" as Foreman
participant "Foreman\nProxy" as Proxy
'participant "Pulp\n(Katello)" as Pulp
participant TFTP
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
participant TFTP
participant HTTP

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we have to use an HTTP participant explicitly? Or can we say that HTTP is served by Foreman Proxy? I was rather going with the latter, but there may still be a few tweaks needed.

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 : power on the machine
Host -> DHCP : request reserved IP and DHCP options
Host -> TFTP : download boot loader
Host -> Host : load the boot loader
Host -> Proxy : get MAC-based config for boot loader
Host -> Proxy : download installer kernel and init RAM disk
Host -> Host : load the installer
Host -> Proxy : request installer configuration
group Template [Provision]
Proxy -> Proxy : render installer configuration
end
Proxy -> Host : provide installer configuration
!include prov-installation-media.iuml
note over Host : operating system installed
!include prov-initial-configuration.iuml
Host -> Foreman : call home\n(disables build mode)
group Templates [*PXE* local boot]
Foreman -> Proxy : render bootloader configuration files
end
Proxy -> Proxy : deploy bootloader configuration files
Host -> Host : reboot

== 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
10 changes: 10 additions & 0 deletions guides/image-sources/puppet-run.iuml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
opt when Puppet enabled
Host -> Puppet : send facts
Host -> Puppet : request catalog
Puppet -> Foreman : forward facts
Puppet -> Foreman : request ENC
Puppet -> Host : respond with requested catalog
Host -> Host : run catalog
Host -> Puppet : send report
Puppet -> Foreman : forward report
end