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 more details on host group settings and nested host groups #2685

Merged
merged 17 commits into from
Jan 26, 2024
Merged
Show file tree
Hide file tree
Changes from 13 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
8 changes: 0 additions & 8 deletions guides/common/assembly_administering-hosts.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,6 @@ include::modules/proc_changing-the-module-stream-for-a-host.adoc[leveloffset=+1]

include::modules/proc_enabling-custom-repositories-on-content-hosts.adoc[leveloffset=+1]

include::modules/proc_creating-a-host-group.adoc[leveloffset=+1]

include::modules/proc_creating-a-host-group-for-each-lifecycle-environment.adoc[leveloffset=+1]

include::modules/proc_adding-a-host-to-a-host-group.adoc[leveloffset=+1]

include::modules/proc_changing-the-host-group-of-a-host.adoc[leveloffset=+1]

ifdef::katello,satellite,orcharhino[]
include::modules/proc_adding-a-host-to-a-host-collection.adoc[leveloffset=+1]

Expand Down
11 changes: 11 additions & 0 deletions guides/common/assembly_working-with-host-groups.adoc
aneta-petrova marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
include::modules/con_working-with-host-groups.adoc[]

include::modules/con_host-group-settings-and-nested-host-groups.adoc[leveloffset=+1]

include::modules/proc_creating-a-host-group.adoc[leveloffset=+1]

include::modules/proc_creating-a-host-group-for-each-lifecycle-environment.adoc[leveloffset=+1]

include::modules/proc_adding-a-host-to-a-host-group.adoc[leveloffset=+1]

include::modules/proc_changing-the-host-group-of-a-host.adoc[leveloffset=+1]
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
[id="Host_Group_Settings_and_Nested_Host_Groups_{context}"]
= Host Group Settings and Nested Host Groups

A host group can define many settings for hosts, such as Lifecycle Environment, Content View, or Ansible roles that are available to the hosts.

IMPORTANT: When you change the settings of an existing host group, the new settings do not propagate to the hosts assigned to the host group.
Only Puppet class settings get updated on hosts after you change them in the host group.

You can create a hierarchy of host groups.
Aim to have one base level host group that represents all hosts in your organization and provides general settings, and then nested groups that provide specific settings.

.Nested Host Group Hierarchy
====
You create a top-level host group named `Base` and two nested host groups named `Webserver` and `Storage`.
The nested host groups are associated with multiple hosts.
You also create host `custom.example.com` that is not associated with any host group.
aneta-petrova marked this conversation as resolved.
Show resolved Hide resolved

{Project} applies host settings in the following order when nesting host groups:

* Host settings take priority over host group settings.
* Nested host group settings take priority over parent host group settings.

[cols="1,1,1"]
|===
|Top-level host group |Nested host group |Host

.5+|*Base*

This host group applies the `{EL}{nbsp}8.8` operating system setting.

.2+|*Webserver*

This host group applies the `linux-system-roles.selinux` Ansible role.

|*webserver1.example.com*
|*webserver2.example.com*

.2+|*Storage*

This host group applies the `linux-system-roles.postfix` Ansible role.

|*storage1.example.com*
|*storage2.example.com*

|
|*custom.example.com*

|===

In this hierarchy:

* `Base` defines the settings common to all hosts. All hosts use {EL}{nbsp}8.8 as their operating system.
* `webserver1.example.com` and `webserver2.example.com` use the `linux-system-roles.selinux` Ansible role.
`storage1.example.com` and `storage2.example.com` use the `linux-system-roles.postfix` Ansible role.
* `custom.example.com` inherits none of the Ansible roles defined by the host groups.
====

.Nested Host Group Settings
====
You define different values for the operating system and Ansible role settings on the top-level host group (*Base*) and nested host groups (*Webserver* and *Storage*).

[cols="1,1,1"]
|===
|Top-level host group |Nested host group |Host

.3+a|*Base*

This host group applies these settings:

* The `{EL}{nbsp}8.8` operating system
* The `linux-system-roles.selinux` Ansible role

a|*Webserver*

This host group applies these settings:

* The `{EL}{nbsp}8.9` operating system
* No Ansible role

a|*webserver1.example.com*

*webserver2.example.com*

a|*Storage*

This host group applies these settings:

* No operating system
* The `linux-system-roles.postfix` Ansible role

a|*storage1.example.com*

*storage2.example.com*

|
a|*custom.example.com*

|===

{Project} applies settings from nested groups in the following way:

* *webserver1.example.com* and *webserver2.example.com* inherit these settings:
** The `{EL}{nbsp}8.9` operating system from host group *Webservers*
** The `linux-system-roles.selinux` Ansible role from host group *Base*
* *storage1.example.com* and *storage2.example.com* inherit these settings:
** The `{EL}{nbsp}8.8` operating system from host group *Base*
** The `linux-system-roles.postfix` Ansible role from host group *Storage*
* *custom.example.com* inherits this setting:
** The `{EL}{nbsp}8.8` operating system from host group *Base*

Lennonka marked this conversation as resolved.
Show resolved Hide resolved
====
6 changes: 6 additions & 0 deletions guides/common/modules/con_working-with-host-groups.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[id="Working_with_Host_Groups_{context}"]
= Working with Host Groups

A host group acts as a template for common host settings.
Instead of adding host settings individually for each host, use host groups to define common settings once and apply them across multiple hosts.
Lennonka marked this conversation as resolved.
Show resolved Hide resolved

27 changes: 1 addition & 26 deletions guides/common/modules/proc_creating-a-host-group.adoc
Original file line number Diff line number Diff line change
@@ -1,35 +1,10 @@
[id="Creating_a_Host_Group_{context}"]
= Creating a Host Group

If you create a high volume of hosts, many of the hosts can have common settings and attributes.
Adding these settings and attributes for every new host is time consuming.
If you use host groups, you can apply common attributes to hosts that you create.

A host group functions as a template for common host settings, containing many of the same details that you provide to hosts.
When you create a host with a host group, the host inherits the defined settings from the host group.
You can then provide additional details to individualize the host.
Create a host group to be able to apply host settings to multiple hosts.

To use the CLI instead of the {ProjectWebUI}, see the xref:cli-creating-a-host-group_{context}[].

.Host Group Hierarchy
You can create a hierarchy of host groups.
Aim to have one base level host group that represents all hosts in your organization and provide general settings, and then nested groups to provide specific settings.
For example, you can have a base level host group that defines the operating system, and two nested host groups that inherit the base level host group:

* *Hostgroup:* `Base` ({EL} 8.8)
** *Hostgroup:* `Webserver` (applies the `nginx` Puppet class)
*** *Host:* `webserver1.example.com` (web server)
*** *Host:* `webserver2.example.com` (web server)
** *Hostgroup:* `Storage` (applies the `nfs` Puppet class)
*** *Host:* `storage1.example.com` (storage server)
*** *Host:* `storage2.example.com` (storage server)
** *Host:* `custom.example.com` (custom host)

In this example, all hosts use {RHEL} 7.6 as their operating system because of their inheritance of the `Base` host group.
The two web server hosts inherit the settings from the `Webserver` host group, which includes the `nginx` Puppet class and the settings from the `Base` host group.
The two storage servers inherit the settings from the `Storage` host group, which includes the `nfs` Puppet class and the settings from the `Base` host group.
The custom host only inherits the settings from the `Base` host group.

.Procedure
. In the {ProjectWebUI}, navigate to *Configure* > *Host Groups* and click *Create Host Group*.
. If you have an existing host group that you want to inherit attributes from, you can select a host group from the *Parent* list.
Expand Down
2 changes: 2 additions & 0 deletions guides/doc-Managing_Hosts/master.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ include::common/modules/con_overview-of-hosts.adoc[leveloffset=+1]

include::common/assembly_administering-hosts.adoc[leveloffset=+1]

include::common/assembly_working-with-host-groups.adoc[leveloffset=+1]

include::common/assembly_registering-hosts.adoc[leveloffset=+1]

include::common/assembly_managing-network-interfaces.adoc[leveloffset=+1]
Expand Down