Chapter 5. Configuring Provisioning Environment

This section shows how to configure various stages of your provisioning environment using hammer. For web UI equivalents of the following procedures see Configuring Provisioning Resources in the Provisioning Guide.

5.1. Domains

Domains in Red Hat Satellite represent DNS zones. Satellite has the ability to assign domain names with Red Hat Satellite Capsule Server DNS. This provides users with a means to group and name hosts within a particular domain and associate them with parameters and Puppet variables.

To create a new domain, issue the following command:

$ hammer domain create --name domain_name

You can associate the newly created domain to organizations and locations using the hammer organization add-domain or hammer location add-domain commands. To view the status of a domain, issue the following command:

$ hammer domain info --name domain_name

5.2. Subnets

Subnets in Red Hat Satellite define networks specified for groups of systems. Subnets use standard IP-address settings to define the network and use the Red Hat Satellite Capsule Server’s DHCP features to assign IP addresses to systems within the subnet. The following command contains the minimal set of options required for subnet creation:

$ hammer subnet create \
--name subnet_name \
--organization-ids org_ID1,org_ID2... \
--location-ids loc_ID1,loc_ID2... \
--domain-ids dom_ID1,dom_ID2... \
--boot-mode boot_mode \
--network network_address \
--mask netmask \
--ipam ipam

Here, boot_mode is one of Static or DHCP, ipam is one of DHCP, Internal DB, or None. If using DHCP, you can set the IP range with the --from and --to options. For the full list of configurable options, see the output of the hammer subnet create --help command.

5.3. Architectures

Architecture in Satellite represents a logical grouping of hosts and operating systems. To view the architectures, issue the following command:

$ hammer architecture list

Architectures are created by Satellite automatically when hosts are registered in Puppet, therefore it is rarely needed to create them manually (even though hammer provides this option).

5.4. Compute Resources

Compute resources are hardware abstractions from virtualization and cloud providers. Satellite uses compute resources to provision virtual machines and containers. Run the following command to create a compute resource:

$ hammer compute-resource create \
--name cr_name \
--organization-ids org_ID1,org_ID2... \
--location-ids loc_ID1,loc_ID2... \
--provider provider

Here, provider is one of: RHEV, RHEL OpenStack Platform, Libvirt, Docker, Rackspace, Google, EC2, or VMware. Depending on the provider type, other options such as --url, or --user may be required. See the output of the hammer compute-resource create --help command for details.

5.5. Installation Media

Installation media (ISO images) provide content for kickstart trees and new host installations in Red Hat Satellite. To list the media, issue the following command:

$ hammer medium list

To add a new medium, issue the following command:

$ hammer medium create --name medium_name --path path_to_medium

You can make the medium available to organizations and locations directly when adding it (see the output of the hammer medium create --help command), or later by using the hammer organization add-medium or hammer location add-medium commands.

5.6. Partition Tables

Partition tables define the partitions and file system layout for new installations when provisioning systems. Red Hat Satellite provides default partition tables associated with operating system families, to view them, issue the following command:

$ hammer partition-table list

To create a new partition table, issue the following command:

$ hammer partition-table create \
--name table_name \
--file path_to_layout_file \
--os-family os_family

See the output of the hammer partition-table --help command for other subcommands.

5.7. Provisioning Templates

Provisioning templates provide the systematic means to run unattended installations. To view the provisioning templates provided by Satellite, enter the following command:

$ hammer template list

To add a new template, enter the following command:

$ hammer template create --name template_name --file path_to_template_file

See the output of the hammer template --help command for other subcommands.

5.7.1. Importing Templates

You can use the hammer import-templates command to import templates from a repository of your choice. You can use different protocols to point to your repository, for example /tmp/dir, git://,, and ssh://

For better indexing and management of your templates, use --prefix to set a category for your templates. To select certain templates from a large repository, use --filter to define the title of the templates that you want to import. For example --filter '.*Ansible Default$' imports various Ansible Default templates.

To import a template from a repository, enter the following command:

$ hammer import-templates \
    --prefix '[Custom Index] ' \
    --filter '.*Template Name$' \
    --repo \
    --branch my_branch \
    --organization 'Default Organization'

5.7.2. Exporting templates

You can use the hammer export-templates command to export templates to a Git repository.

  1. Clone a local copy of your Git repository:

    $ git clone /custom/templates
  2. Change the owner of your local directory to the foreman user, and change the SELinux context with the following commands:

    # chown -R foreman:foreman /custom/templates
    # chcon -R -t httpd_sys_rw_content_t /custom/templates
  3. To export the templates to your local repository, enter the following command:

    hammer export-templates --organization 'Default Organization' --repo /custom/templates

5.8. Operating Systems

Operating systems define combinations of installation methods and media and are grouped within families. As a default, Red Hat Satellite uses a Red Hat family. Families allow Satellite to change certain behaviors when provisioning hosts. To list operating systems, issue the following command:

$ hammer os list

To create a new operating system, issue the following command:

$ hammer os create --name os_name --major version_number

Then you can add architectures, partition tables, installation media, and configuration templates to the operating system. See the output of the hammer os --help command for details.

Example 5.1. Updating Multiple Operating Systems

The following Bash script assigns each operating system a partition table (Kickstart default), configuration template (Kickstart default PXELinux), and provisioning template (Satellite Kickstart Default).

PARTID=$(hammer --csv partition-table list | grep "Kickstart default" | cut -d, -f1)
PXEID=$(hammer --csv template list --per-page=1000 | grep "Kickstart default PXELinux" | cut -d, -f1)
SATID=$(hammer --csv template list --per-page=1000 | grep "provision" | grep "Satellite Kickstart Default" | cut -d, -f1)

for i in $(hammer --csv os list | grep -vi '^ID' | awk -F, {'print $1'})
   hammer partition-table add-operatingsystem --id="${PARTID}" --operatingsystem-id="${i}"
   hammer template add-operatingsystem --id="${PXEID}" --operatingsystem-id="${i}"
   hammer os set-default-template --id="${i}" --config-template-id="${PXEID}"
   hammer os add-config-template --id="${i}" --config-template-id="${SATID}"
   hammer os set-default-template --id="${i}" --config-template-id="${SATID}"

You can add grep commands to the for statement to further specify the affected operating systems. To verify if the assignment was performed correctly, use the hammer os info command.

5.9. Parameters

Parameters define the behavior of Red Hat Satellite during provisioning. There are several types of parameters, see Parameters in the Puppet Guide for details. Use the following example to set a global parameter:

$ hammer global-parameter set --name param_name --value param_value

Example 5.2. Setting a Global Parameter to Disable the Firewall

Run the following command to set the firewall global option to disabled:

$ hammer global-parameter set --name firewall --value --disabled

To verify the setting, issue the following command:

$ hammer global-parameter list
firewall | --disabled

Similarly, you can use hammer to set other parameter types:

  • To set domain parameters, use:
$ hammer domain set-parameter \
--name param_name \
--value param_value \
--domain domain_name
  • To set host group parameters, use:
$ hammer hostgroup set-parameter \
--name param_name \
--value param_value \
--hostgroup hg_name
  • To set host parameters, use:
$ hammer host set-parameter \
--name param_name \
--value param_value \
--host h_name
  • To update smart class parameters, use:
$ hammer sc-param \
--name param_name \
--default-value param_value