Using the Hammer CLI tool
Administer Satellite or develop custom scripts by using Hammer, the Satellite command-line tool
Abstract
Providing feedback on Red Hat documentation Copy linkLink copied to clipboard!
We appreciate your feedback on our documentation. Let us know how we can improve it.
Use the Create Issue form in Red Hat Jira to provide your feedback. The Jira issue is created in the Red Hat Satellite Jira project, where you can track its progress.
Procedure
- Log in to Atlassian Jira.
- Click the following link: Create Issue.
- Complete the Summary, Description, and Reporter fields. In the Description field, include the documentation URL, chapter or section number, and a detailed description of the issue. Do not modify any other fields in the form.
- Click Create.
Chapter 1. Introduction to Hammer Copy linkLink copied to clipboard!
Hammer is a powerful command-line tool provided with Red Hat Satellite 6. You can use Hammer to configure and manage a Satellite Server either through CLI commands or automation in shell scripts. Hammer also provides an interactive shell.
Additional resources
1.1. Hammer compared to Satellite web UI Copy linkLink copied to clipboard!
Compared to navigating the Satellite web UI, using Hammer can result in much faster interaction with the Satellite Server, as common shell features such as environment variables and aliases are at your disposal. You can also incorporate Hammer commands into reusable scripts for automating tasks of various complexity. Output from Hammer commands can be redirected to other tools, which allows for integration with your existing environment. You can issue Hammer commands directly on the base operating system running Red Hat Satellite.
Access to base operating system on Satellite Server is required to issue Hammer commands, which can limit the number of potential users compared to the Satellite web UI. Although the parity between Hammer and the Satellite web UI is almost complete, the Satellite web UI has development priority and can be ahead especially for newly introduced features.
1.2. Satellite API compared to Hammer CLI Copy linkLink copied to clipboard!
For many tasks, you can use both Hammer and Satellite API. In these situations, you can choose whether Hammer or Satellite API is the more suitable tool for your use case.
You can use Hammer as a human-friendly interface to Satellite API. For example, to test responses to API calls before applying them in a script, use the --debug option to inspect API calls that Hammer issues: hammer --debug organization list.
In the background, each Hammer command first establishes a binding to the API, then sends a request. This can have performance implications when executing a large number of Hammer commands in sequence. In contrast, a script communicating directly with the API establishes the binding only once.
Additional resources
1.3. Getting help with Hammer CLI Copy linkLink copied to clipboard!
View the full list of hammer options and subcommands by executing:
$ hammer --help
Use --help to inspect any subcommand, for example:
$ hammer organization --help
You can search the help output using grep, or redirect it to a text viewer, for example:
$ hammer | less
Chapter 2. Installing standalone Hammer Copy linkLink copied to clipboard!
You can install Hammer on a host running RHEL that has no Satellite Server installed, and use it to connect from the host to a remote Satellite.
Prerequisites
- Ensure that you register the host to Satellite Server or Capsule Server.
Ensure that the following repositories are enabled and synchronized on Satellite Server:
- rhel-9-for-x86_64-baseos-rpms
- rhel-9-for-x86_64-appstream-rpms
- satellite-utils-6.18-for-rhel-9-x86_64-rpms
Procedure
- Enable the required repositories on the host.
Install Hammer CLI:
# dnf install satellite-cliSet the
:host:entry in the/etc/hammer/cli.modules.d/foreman.ymlfile to the Satellite URL::host: 'https://satellite.example.com'
Chapter 3. Hammer authentication Copy linkLink copied to clipboard!
A Satellite user must prove their identity to Red Hat Satellite when entering hammer commands. Hammer commands can be run manually or automatically. In either case, hammer requires Satellite credentials for authentication. There are three methods of hammer authentication:
- Hammer authentication session
- Storing credentials in the hammer configuration file
- Providing credentials with each hammer command
The hammer configuration file method is recommended when running commands automatically. For example, running Satellite maintenance commands from a cron job. When running commands manually, Red Hat recommends using the hammer authentication session and providing credentials with each command.
3.1. Authenticating Hammer using a configuration file Copy linkLink copied to clipboard!
If you ran the Satellite installation with --foreman-initial-admin-username and --foreman-initial-admin-password options, credentials you entered are stored in the ~/.hammer/cli.modules.d/foreman.yml configuration file on Satellite Server. Hammer does not prompt for your credentials when you run it on Satellite Server.
If you run a standalone Hammer, add your credentials to the Hammer configuration file.
If you change your credentials on Satellite Server, you must update the configuration file manually. The installer does not overwrite the configuration file.
Procedure
Add your credentials to the
~/.hammer/cli.modules.d/foreman.ymlconfiguration file::foreman: :username: 'username' :password: 'password'Use only spaces for indentation in Hammer configuration files, do not use tabs.
3.2. Authenticating Hammer using CLI options Copy linkLink copied to clipboard!
If you do not have your Satellite credentials saved in the ~/.hammer/cli.modules.d/foreman.yml configuration file, Hammer prompts you for them each time you enter a command.
Examples in this guide assume that you have saved credentials in the configuration file or are using a Hammer authentication session.
Procedure
Specify your credentials when executing a command as follows:
$ hammer -u username -p password subcommands
3.3. Authenticating Hammer using sessions Copy linkLink copied to clipboard!
The Hammer authentication session is a cache that stores your credentials, and you have to provide them only once, at the beginning of the session. This method is suited to running several Hammer commands in succession, for example a script containing Hammer commands. In this scenario, you enter your Satellite credentials once, and the script runs as expected. By using the Hammer authentication session, you avoid storing your credentials in the script itself and in the ~/.hammer/cli.modules.d/foreman.yml Hammer configuration file.
Prerequisites
You have enabled sessions by adding
:use_sessions: trueto the~/.hammer/cli.modules.d/foreman.ymlfile::foreman: :use_sessions: trueNote that if you enable sessions, credentials stored in the configuration file will be ignored.
Optional: You can change the length of a session, for example, to 30 minutes:
$ hammer settings set \ --name idle_timeout \ --value 30The default length is 60 minutes.
Procedure
Start a session:
$ hammer auth loginYou are prompted for your Satellite credentials, and logged in. You will not be prompted for the credentials again until your session expires.
Verification
View the current status of the session:
$ hammer auth status
Next steps
End the session:
$ hammer auth logout
Chapter 4. Hammer configuration Copy linkLink copied to clipboard!
The default location for global Hammer configuration is:
-
/etc/hammer/cli_config.ymlfor general Hammer settings -
/etc/hammer/cli.modules.d/for CLI module configuration files
You can set user specific directives for Hammer (in ~/.hammer/cli_config.yml) as well as for CLI modules (in respective .yml files under ~/.hammer/cli.modules.d/).
To see the order in which configuration files are loaded, as well as versions of loaded modules, use:
$ hammer -d --version
Loading configuration for many CLI modules can slow down the execution of Hammer commands. In such a case, consider disabling CLI modules that are not regularly used.
Apart from saving credentials as described in Chapter 3, Hammer authentication, you can set several other options in the ~/.hammer/ configuration directory. For example, you can change the default log level and set log rotation with the following directives in ~/.hammer/cli_config.yml. These directives affect only the current user and are not applied globally.
:log_level: 'warning'
:log_size: 5 #in MB
Similarly, you can configure user interface settings. For example, set the number of entries displayed per request in the Hammer output by changing the following line:
:per_page: 30
This setting is an equivalent of the --per-page Hammer option.
4.1. Setting a default organization and location context Copy linkLink copied to clipboard!
Many hammer commands are organization specific. You can set a default organization and location for hammer commands so that you do not have to specify them every time with the --organization and --location options.
Specifying a default organization is useful when you mostly manage a single organization, as it makes your commands shorter. However, when you switch to a different organization, you must use hammer with the --organization option to specify it.
Procedure
Set a default organization:
$ hammer defaults add --param-name organization \ --param-value "Your_Organization"You can find the name of your organization with the
hammer organization listcommand.Optional: Set a default location:
$ hammer defaults add --param-name location \ --param-value "Your_Location"You can find the name of your location with the
hammer location listcommand.
Verification
Review the currently specified default settings:
$ hammer defaults list
4.2. Increasing the logging level for Hammer Copy linkLink copied to clipboard!
You can find the log in ~/.hammer/log/hammer.log.
Procedure
In
/etc/hammer/cli_config.yml, set the:log_level:option todebug::log_level: 'debug'
Chapter 5. Using interactive Hammer shell Copy linkLink copied to clipboard!
You can issue Hammer commands through an interactive shell.
In the shell, you can enter sub-commands directly without typing hammer, which can be useful for testing commands before using them in a script.
Procedure
Start the shell:
$ hammer shell
Next steps
-
To exit the shell, type
exitor press Ctrl + D.
Chapter 6. Formatting Hammer output Copy linkLink copied to clipboard!
You can modify the default formatting of the output of Hammer commands to simplify the processing of this output by other command line tools and applications.
Hammer provides several output formats:
-
table– generates output in the form of a human readable table (default). -
base– generates output in the form of key-value pairs. -
yaml– generates output in the YAML format. csv– generates output in the Comma Separated Values format. Output in CSV format is useful for example when you need to parse IDs and use them in a for loop.To define a custom separator, use the
--csvand--csv-separatoroptions instead.-
json– generates output in the JavaScript Object Notation format. -
silent– suppresses the output.
Procedure
Set the output format with the
--outputoption:$ hammer --output output_format organization listDefine a custom separator for the CSV format:
$ hammer --csv --csv-separator ";" organization list
Chapter 7. Hiding header output from Hammer commands Copy linkLink copied to clipboard!
When you use any Hammer command, you have the option of hiding headers from the output. If you want to pipe or use the output in custom scripts, hiding the output is useful.
Procedure
Add the
--no-headersoption to any Hammer command to hide the header output:$ hammer --no-headers command
Chapter 8. Using JSON for complex parameters Copy linkLink copied to clipboard!
JSON is the preferred way to describe complex parameters.
An example of JSON formatted content appears below:
$ hammer compute-profile values create --compute-profile-id 22 --compute-resource-id 1 --compute-attributes=
'{
"cpus": 2,
"corespersocket": 2,
"memory_mb": 4096,
"firmware": "efi",
"resource_pool": "Resources",
"cluster": "Example_Cluster",
"guest_id": "rhel8",
"path": "/Datacenters/EXAMPLE/vm/",
"hardware_version": "Default",
"memoryHotAddEnabled": 0,
"cpuHotAddEnabled": 0,
"add_cdrom": 0,
"boot_order": [
"disk",
"network"
],
"scsi_controllers":[
{
"type": "ParaVirtualSCSIController",
"key":1000
},
{
"type": "ParaVirtualSCSIController",
"key":1001
}
]
}'
Chapter 9. Troubleshooting Satellite by using Hammer Copy linkLink copied to clipboard!
You can use the hammer ping command to check the status of core Satellite services. Together with the satellite-maintain service status command, this can help you to diagnose and troubleshoot Satellite issues. If all services are running as expected, the output looks as follows:
$ hammer ping
database:
Status: ok
Server Response: Duration: 0ms
cache:
servers:
1) Status: ok
Server Response: Duration: 1ms
candlepin:
Status: ok
Server Response: Duration: 17ms
candlepin_auth:
Status: ok
Server Response: Duration: 14ms
candlepin_events:
Status: ok
message: 4 Processed, 0 Failed
Server Response: Duration: 0ms
katello_events:
Status: ok
message: 5 Processed, 0 Failed
Server Response: Duration: 0ms
pulp3:
Status: ok
Server Response: Duration: 5083ms
pulp3_content:
Status: ok
Server Response: Duration: 5051ms
foreman_tasks:
Status: ok
Server Response: Duration: 2ms
Chapter 10. Hammer cheat sheet Copy linkLink copied to clipboard!
Hammer is a command-line tool provided with Red Hat Satellite 6. You can use Hammer to configure and manage a Satellite Server by using either CLI commands or shell script automation. Run hammer full-help on Satellite to view the complete Hammer CLI help.
10.1. General information Copy linkLink copied to clipboard!
Review essential information for using Hammer CLI in Red Hat Satellite. There are certain options that apply to all commands, such as authentication and getting help.
- Authentication in examples
-
This cheat sheet assumes saved credentials in
~/.hammer/cli_config.yml. For more information, see Chapter 3, Hammer authentication. --help- Displays Hammer commands and options. You can append it after a subcommand to get more information.
- organization-specific
The command requires you to specify an organization. You can append
--organization My_Organizationto the command or set a default organization:hammer defaults add \ --param-name organization_id \ --param-value org_ID- location-specific
The command requires you to specify a location. You can append
--location My_Locationto the command or set a default location:hammer defaults add \ --param-name location_id \ --param-value loc_ID
10.2. Organizations, locations, and repositories Copy linkLink copied to clipboard!
You can manage organizations, locations, and repositories in Red Hat Satellite by using Hammer CLI commands.
| Subcommand | Description and tasks |
|---|---|
|
| Create an organization:
List organizations:
|
|
| See the options for organization |
|
| Upload a subscription manifest:
|
|
| Enable a repository:
|
|
| Synchronize a repository:
Create a custom repository:
Upload content to a custom repository:
|
10.3. Content life cycles Copy linkLink copied to clipboard!
You can manage content views in lifecycle environments in Red Hat Satellite by using Hammer CLI commands.
| Subcommand | Description and tasks |
|---|---|
|
| Create a life cycle environment:
List life cycle environments:
|
|
| Create a content view:
Add repositories to a content view:
Add Puppet modules to a content view:
Publishing a content view:
Promoting a content view:
Incremental update of a content view:
|
10.4. Provisioning environments Copy linkLink copied to clipboard!
You can prepare provisioning infrastructure in Red Hat Satellite by using Hammer CLI commands.
| Subcommand | Description and tasks |
|---|---|
|
| Create a domain:
|
| Add a subnet:
| |
|
| Create a compute resource:
|
|
| Add an installation medium:
|
|
| Add a partition table:
|
|
| Add a provisioning template:
|
|
| Add an operating system:
|
10.5. Activation keys Copy linkLink copied to clipboard!
You can create activation keys and add subscriptions in Red Hat Satellite by using Hammer CLI commands.
| Subcommand | Description and tasks |
|---|---|
|
| Create an activation key:
Add a subscription to the activation key:
|
10.6. Users and permissions Copy linkLink copied to clipboard!
You can manage users, user groups, roles, and filters in Red Hat Satellite by using Hammer CLI commands.
| Subcommand | Description and tasks |
|---|---|
| Create a user:
Add a role to a user:
| |
|
| Create a user group:
Add a role to a user group:
|
|
| Create a role:
|
|
| Create a filter and add it to a role:
|
10.7. Errata Copy linkLink copied to clipboard!
You can manage security updates and patches in Red Hat Satellite by using Hammer CLI commands.
| Subcommand | Description and tasks |
|---|---|
|
| List errata:
Find erratum by CVE:
Inspect erratum:
|
|
| List errata applicable to a host:
Apply errata to a host:
|
10.8. Hosts Copy linkLink copied to clipboard!
You can manage hosts, host groups, and remote job execution in Red Hat Satellite by using Hammer CLI commands.
| Subcommand | Description and tasks |
|---|---|
| Create a host group:
Add an activation key to a host group:
| |
| Create a host (inheriting parameters from a host group):
Remove the host from host group:
| |
|
| Add a job template for remote execution:
|
|
| Start a remote job:
Monitor the remote job:
|
10.9. Tasks Copy linkLink copied to clipboard!
You can list tasks and monitor their progress in Red Hat Satellite by using Hammer CLI commands.
| Subcommand | Description and tasks |
|---|---|
|
| List all tasks:
Monitor progress of a running task:
|