Skip to content

Commit 88072ab

Browse files
Restructure boot disks in provisioning (theforeman#3625)
Co-authored-by: Maximilian Kolb <mail@maximilian-kolb.de>
1 parent bc888f4 commit 88072ab

12 files changed

+277
-7
lines changed

guides/common/assembly_using-boot-disks-to-provision-hosts.adoc

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,19 @@
44

55
include::modules/con_using-boot-disks-to-provision-hosts.adoc[]
66

7-
include::modules/proc_creating-hosts-with-pxeless-provisioning.adoc[leveloffset=+1]
7+
include::modules/con_boot-disk-workflow.adoc[leveloffset=+1]
8+
9+
include::modules/con_boot-disk-types.adoc[leveloffset=+1]
10+
11+
include::modules/proc_generating-a-full-host-boot-disk.adoc[leveloffset=+1]
12+
13+
include::modules/proc_generating-a-subnet-boot-disk.adoc[leveloffset=+1]
14+
15+
ifndef::satellite[]
16+
include::modules/proc_generating-a-generic-boot-disk.adoc[leveloffset=+1]
17+
18+
include::modules/proc_generating-a-host-boot-disk.adoc[leveloffset=+1]
19+
endif::[]
820

921
include::modules/proc_deploying-ssh-keys-during-provisioning.adoc[leveloffset=+1]
1022

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
[id="boot-disk-types"]
2+
= Boot disk types
3+
4+
You can generate the following types of boot disks:
5+
6+
Full host image::
7+
A boot ISO that contains the installer kernel and initial RAM disk image for a specific host.
8+
The boot loader on this image chain loads the installer directly from the image.
9+
This image is useful if the host fails to chain load from {ProjectServer} or {SmartProxyServer} correctly.
10+
The provisioning template still downloads from {ProjectServer}.
11+
+
12+
This image is based on SYSLINUX and GRUB and works with most network cards.
13+
+
14+
This image contains a provisioning security token, therefore the generated image has a limited lifespan.
15+
For more information about configuring the security token, see xref:configuring-the-security-token-validity-duration[].
16+
17+
Subnet image::
18+
A boot ISO that is not associated with a specific host.
19+
You can use this image if you have an environment with multiple subnets, where hosts do not have access to {ProjectServer} but can access {SmartProxy} in the particular subnet.
20+
You can use this image to boot multiple hosts on the same subnet.
21+
The boot loader on this image chain loads the installer from the TFTP {SmartProxy} of the host.
22+
+
23+
The ISO sends the MAC address of the host to {SmartProxy}, which matches the MAC address against the host entry.
24+
The image does not store IP address details and requires access to a DHCP server on the network to bootstrap.
25+
This image is generic to all hosts with a provisioning NIC on the same subnet.
26+
+
27+
This image is based on iPXE boot firmware.
28+
Only a limited number of network cards is supported.
29+
For more information, see https://ipxe.org/appnote/hardware_drivers[supported hardware drivers at ipxe.org].
30+
31+
ifndef::satellite[]
32+
Generic image::
33+
A boot ISO that is not associated with a specific host.
34+
The boot loader on this image chain loads the installer from {ProjectServer}.
35+
+
36+
The ISO sends the MAC address of the host to {SmartProxy}, which matches the MAC address against the host entry.
37+
The image does not store IP address details and requires access to a DHCP server on the network to bootstrap.
38+
+
39+
This image is based on iPXE boot firmware.
40+
Only a limited number of network cards is supported.
41+
For more information, see https://ipxe.org/appnote/hardware_drivers[supported hardware drivers at ipxe.org].
42+
+
43+
This image does not support UEFI systems.
44+
45+
Host image::
46+
A boot ISO for a specific host.
47+
This image contains only the boot files that are necessary to access the installation media on {ProjectServer}.
48+
You define the subnet data in {Project} and the image is created with static networking.
49+
+
50+
This image is based on iPXE boot firmware.
51+
Only a limited number of network cards is supported.
52+
For more information, see https://ipxe.org/appnote/hardware_drivers[supported hardware drivers at ipxe.org].
53+
+
54+
This image contains a provisioning security token, therefore the generated image has a limited lifespan.
55+
For more information about configuring the security token, see xref:configuring-the-security-token-validity-duration[].
56+
+
57+
This image does not support UEFI systems.
58+
endif::[]
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
[id="boot-disk-workflow"]
2+
= Boot disk workflow
3+
4+
Using a boot disk to provision a host involves the following steps:
5+
6+
. Create a host entry in {Project}.
7+
. Generate a boot disk ISO image.
8+
. Boot your host from the ISO image.
9+
. The host connects to Templates {SmartProxy} and starts installing the operating system.
10+
ifdef::satellite,katello,orcharhino[]
11+
. When the installation completes, the host registers to {ProjectServer} by using an activation key, performs necessary configuration, and installs management tools from the *{project-client-name}* repository.
12+
endif::[]
13+
ifndef::satellite,katello,orcharhino[]
14+
. When the installation completes, the host registers to {ProjectServer}.
15+
endif::[]
Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
[id="using-boot-disks-to-provision-hosts"]
22
= Using boot disks to provision hosts
33

4-
You can use boot disks to boot hosts without PXE firmware.
4+
Some hardware does not provide a PXE boot interface or your environment may not support network boot.
5+
In {Project}, you can provision a host without PXE boot.
6+
This is also known as PXE-less provisioning and involves generating a boot ISO that hosts can use.
7+
Using this ISO, the host can boot the installation media, connect to {SmartProxy}, and install the operating system.
8+
9+
{Project} also provides a PXE-less discovery service that operates without PXE-based services, such as DHCP and TFTP.
10+
For more information, see xref:discovery-in-pxeless-mode[].

guides/common/modules/proc_associating-templates-with-operating-systems.adoc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
1-
[id="Associating_Templates_with_Operating_Systems_{context}"]
1+
[id="associating-templates-with-operating-systems"]
22
= Associating templates with operating systems
33

44
You can associate templates with operating systems in {Project}.
55
The following example adds a provisioning template to an operating system entry.
6+
To use the CLI instead of the {ProjectWebUI}, see the xref:cli-associating-templates-with-operating-systems[].
67

78
.Procedure
89
. In the {ProjectWebUI}, navigate to *Hosts* > *Templates* > *Provisioning Templates*.
910
. Select a provisioning template.
1011
. On the *Association* tab, select all applicable operating systems.
1112
. Click *Submit* to save your changes.
1213

14+
[id="cli-associating-templates-with-operating-systems"]
1315
.CLI procedure
1416
. Optional: View all templates:
1517
+

guides/common/modules/proc_creating-hosts-from-discovered-hosts.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ include::snip_prerequisite-networking-for-provisioning.adoc[]
1111
* You have one or more discovered hosts in your {Project} inventory.
1212
include::snip_prerequisites-common-compute-resource.adoc[]
1313
* You have associated a `Discovery kexec`-kind template and `provisioning`-kind template with the operating system.
14-
For more information, see xref:Associating_Templates_with_Operating_Systems_{context}[].
14+
For more information, see xref:associating-templates-with-operating-systems[].
1515

1616
For information about the security tokens, see xref:configuring-the-security-token-validity-duration[].
1717

@@ -75,4 +75,4 @@ endif::[]
7575
ifdef::provisioning-installer[]
7676
The rest of the process is identical to the normal PXE workflow.
7777
For more information, see xref:creating-hosts-with-pxe-boot-provisioning[].
78-
endif::[]
78+
endif::[]
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
[id="generating-a-full-host-boot-disk"]
2+
= Generating a full host boot disk
3+
4+
You can generate a full boot disk for a specific host.
5+
6+
To use the CLI instead of the {ProjectWebUI}, see the xref:cli-generating-a-full-host-boot-disk[].
7+
8+
.Prerequisites
9+
ifndef::satellite[]
10+
* Ensure that the operating system has PXELinux and PXEGrub2 templates associated.
11+
For more information, see xref:associating-templates-with-operating-systems[].
12+
endif::[]
13+
ifdef::katello,satellite,orcharhino[]
14+
include::snip_prerequisite-activation-key-available.adoc[]
15+
include::snip_prerequisite-project-client-repository-ak.adoc[]
16+
endif::[]
17+
18+
.Procedure
19+
include::snip_steps-create-a-host-tab-host.adoc[]
20+
include::snip_steps-create-a-host-tab-interfaces.adoc[]
21+
. Click the *Operating System* tab.
22+
Verify that all fields contain correct values.
23+
. Click *Resolve* in *Provisioning Templates* to check the new host can identify the right provisioning templates to use.
24+
+
25+
For more information about associating provisioning templates, see xref:associating-templates-with-operating-systems[].
26+
ifdef::katello,satellite,orcharhino[]
27+
include::snip_step-parameter-ak.adoc[]
28+
endif::[]
29+
. Click *Submit* to save the host details.
30+
This creates a host entry and the host details page appears.
31+
. Download the boot disk from {ProjectServer}.
32+
On the host details page, click the vertical ellipsis and select *Full host '_My_Host_Name_' image*.
33+
34+
[id="cli-generating-a-full-host-boot-disk"]
35+
.CLI procedure
36+
. Create a host:
37+
+
38+
[options="nowrap" subs="+quotes"]
39+
----
40+
$ hammer host create \
41+
--build true \
42+
--enabled true \
43+
--hostgroup "_My_Host_Group_" \
44+
--location "_My_Location_" \
45+
--mac "_My_MAC_Address_" \
46+
--managed true \
47+
--name "_My_Host_Name_" \
48+
--organization "_My_Organization_"
49+
----
50+
. Configure the network interface of your host:
51+
+
52+
[options="nowrap" subs="+quotes"]
53+
----
54+
$ hammer host interface update \
55+
--host "_My_Host_Name_" \
56+
--managed true \
57+
--primary true \
58+
--provision true
59+
----
60+
. Download the *Full host image* boot disk from {ProjectServer}:
61+
+
62+
[options="nowrap" subs="+quotes"]
63+
----
64+
$ hammer bootdisk host \
65+
--full true \
66+
--host _My_Host_Name_
67+
----
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
[id="generating-a-generic-boot-disk"]
2+
= Generating a generic boot disk
3+
4+
You can generate a generic boot disk.
5+
6+
To use the CLI instead of the {ProjectWebUI}, see the xref:cli-generating-a-generic-boot-disk[].
7+
8+
This image is also available from the `/disks/generic` URL path on your {ProjectServer}, for example, `\https://{foreman-example-com}/disks/generic`.
9+
10+
.Prerequisites
11+
* Ensure that the `{ipxe-package}` package is installed on your {ProjectServer}.
12+
13+
.Procedure
14+
. In the {ProjectWebUI}, navigate to *Infrastructure* > *Subnets*.
15+
. Click the dropdown menu in the *Actions* column of the required subnet.
16+
. Select *Generic image*.
17+
18+
[id="cli-generating-a-generic-boot-disk"]
19+
.CLI procedure
20+
* Generate the *Generic image* boot disk:
21+
+
22+
[options="nowrap" subs="+quotes"]
23+
----
24+
$ hammer bootdisk generic
25+
----
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
[id="generating-a-host-boot-disk"]
2+
= Generating a host boot disk
3+
4+
You can generate a boot disk for a specific host.
5+
6+
To use the CLI instead of the {ProjectWebUI}, see the xref:cli-generating-a-host-boot-disk[].
7+
8+
ifdef::katello,satellite,orcharhino[]
9+
.Prerequisites
10+
include::snip_prerequisite-activation-key-available.adoc[]
11+
include::snip_prerequisite-project-client-repository-ak.adoc[]
12+
endif::[]
13+
14+
.Procedure
15+
include::snip_steps-create-a-host-tab-host.adoc[]
16+
include::snip_steps-create-a-host-tab-interfaces.adoc[]
17+
. Click the *Operating System* tab.
18+
Verify that all fields contain correct values.
19+
. Click *Resolve* in *Provisioning Templates* to check the new host can identify the right provisioning templates to use.
20+
+
21+
For more information about associating provisioning templates, see xref:associating-templates-with-operating-systems[].
22+
ifdef::katello,satellite,orcharhino[]
23+
include::snip_step-parameter-ak.adoc[]
24+
endif::[]
25+
. Click *Submit* to save the host details.
26+
This creates a host entry and the host details page appears.
27+
. Download the boot disk from {ProjectServer}.
28+
On the host details page, click the vertical ellipsis and select *Host '_My_Host_Name_' image*.
29+
30+
[id="cli-generating-a-host-boot-disk"]
31+
.CLI procedure
32+
. Create a host:
33+
+
34+
[options="nowrap" subs="+quotes"]
35+
----
36+
$ hammer host create \
37+
--build true \
38+
--enabled true \
39+
--hostgroup "_My_Host_Group_" \
40+
--location "_My_Location_" \
41+
--mac "_My_MAC_Address_" \
42+
--managed true \
43+
--name "_My_Host_Name_" \
44+
--organization "_My_Organization_"
45+
----
46+
. Configure the network interface of your host:
47+
+
48+
[options="nowrap" subs="+quotes"]
49+
----
50+
$ hammer host interface update \
51+
--host "_My_Host_Name_" \
52+
--managed true \
53+
--primary true \
54+
--provision true
55+
----
56+
. Download the *Host image* boot disk from {ProjectServer}:
57+
+
58+
[options="nowrap" subs="+quotes"]
59+
----
60+
$ hammer bootdisk host --host _My_Host_Name_
61+
----
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
[id="generating-a-subnet-boot-disk"]
2+
= Generating a subnet boot disk
3+
4+
You can generate a subnet boot disk.
5+
6+
To use the CLI instead of the {ProjectWebUI}, see the xref:cli-generating-a-subnet-boot-disk[].
7+
8+
.Prerequisites
9+
* Ensure that the `{ipxe-package}` package is installed on your {SmartProxy}.
10+
11+
.Procedure
12+
. In the {ProjectWebUI}, navigate to *Infrastructure* > *Subnets*.
13+
. Click the dropdown menu in the *Actions* column of the required subnet.
14+
. Select *Subnet generic image*.
15+
16+
[id="cli-generating-a-subnet-boot-disk"]
17+
.CLI procedure
18+
* Generate the *Subnet image* boot disk:
19+
+
20+
[options="nowrap" subs="+quotes"]
21+
----
22+
$ hammer bootdisk subnet --subnet _My_Subnet_Name_
23+
----

0 commit comments

Comments
 (0)