-
Notifications
You must be signed in to change notification settings - Fork 93
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
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
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 |
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) |
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 |
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. |
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 |
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 | ||||||
|
||||||
actor User | ||||||
participant "Provisioned\nHost" as Host | ||||||
participant "Foreman" as Foreman | ||||||
participant "Foreman\nProxy" as Proxy | ||||||
'participant "Pulp\n(Katello)" as Pulp | ||||||
participant TFTP | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 |
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 |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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
.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
HTTP boot feature.