Puppet Class: foreman::cli

Inherits:
foreman::cli::params
Defined in:
manifests/cli.pp

Overview

Foreman command line interface

This class installs the Hammer command line interface (CLI).

Parameters:

$foreman_url

URL on which Foreman runs

$username

Username for authentication

$password

Password for authentication

Advanced parameters:

$manage_root_config

Whether to manage /root/.hammer configuration.

$use_sessions

Enable using sessions

$refresh_cache

Check API documentation cache status on each request

$request_timeout

API request timeout, set -1 for infinity

$ssl_ca_file

Path to SSL certificate authority

$version

foreman-cli package version, it’s passed to ensure parameter of package resource can be set to specific version number, ‘latest’, ‘present’ etc.

Parameters:

  • foreman_url (Optional[Stdlib::HTTPUrl]) (defaults to: undef)
  • version (String) (defaults to: 'installed')
  • manage_root_config (Boolean) (defaults to: true)
  • username (Optional[String]) (defaults to: undef)
  • password (Optional[String]) (defaults to: undef)
  • use_sessions (Boolean) (defaults to: false)
  • refresh_cache (Boolean) (defaults to: false)
  • request_timeout (Integer[-1]) (defaults to: 120)
  • ssl_ca_file (Optional[Stdlib::Absolutepath]) (defaults to: undef)


28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'manifests/cli.pp', line 28

class foreman::cli (
  Optional[Stdlib::HTTPUrl] $foreman_url = undef,
  String $version = 'installed',
  Boolean $manage_root_config = true,
  Optional[String] $username = undef,
  Optional[String] $password = undef,
  Boolean $use_sessions = false,
  Boolean $refresh_cache = false,
  Integer[-1] $request_timeout = 120,
  Optional[Stdlib::Absolutepath] $ssl_ca_file = undef,
) inherits foreman::cli::params {
  # Inherit URL & auth parameters from foreman class if possible
  if defined('$foreman::foreman_url') {
    $foreman_url_real = pick($foreman_url, $foreman::foreman_url)
    $username_real    = pick($username, $foreman::initial_admin_username)
    $password_real    = pick($password, $foreman::initial_admin_password)
    $ssl_ca_file_real = pick($ssl_ca_file, $foreman::server_ssl_chain)
  } else {
    $foreman_url_real = $foreman_url
    $username_real    = $username
    $password_real    = $password
    $ssl_ca_file_real = $ssl_ca_file
  }

  package { 'foreman-cli':
    ensure => $version,
  }
  -> file { '/etc/hammer/cli.modules.d/foreman.yml':
    ensure  => file,
    owner   => 'root',
    group   => 'root',
    mode    => '0644',
    content => epp(
      'foreman/hammer_etc.yml.epp',
      {
        host            => $foreman_url_real,
        use_sessions    => $use_sessions,
        refresh_cache   => $refresh_cache,
        request_timeout => $request_timeout,
        ssl_ca_file     => $ssl_ca_file_real,
      }
    ),
  }

  # Separate configuration for admin username/password
  if $manage_root_config {
    file { '/root/.hammer':
      ensure => directory,
      owner  => 'root',
      group  => 'root',
      mode   => '0600',
    }
    file { '/root/.hammer/cli.modules.d':
      ensure => directory,
      owner  => 'root',
      group  => 'root',
      mode   => '0600',
    }
    file { '/root/.hammer/cli.modules.d/foreman.yml':
      ensure  => file,
      owner   => 'root',
      group   => 'root',
      mode    => '0600',
      replace => false,
      content => epp(
        'foreman/hammer_root.yml.epp',
        {
          username => $username_real,
          password => $password_real,
        }
      ),
    }
  }

  Anchor <| title == 'foreman::repo' |> ~> Package <| tag == 'foreman::cli' |>
}