Defined Type: openssh::client::host

Defined in:
manifests/client/host.pp

Overview

Declare a client host block

Examples:

Declaring a default host block

include ::openssh::client
::openssh::client::configuration { '/home/user/.ssh/config':
  owner => 'user',
  group => 'user',
  mode  => '0640',
}
::openssh::client::host { 'default':
  host          => '*',
  target        => '/home/user/.ssh/config',
  order         => 99,
  proxy_command => '/usr/bin/nc -X connect -x 192.0.2.0:8080 %h %p',
}

Parameters:

  • host (String)
  • target (Stdlib::Absolutepath)
  • order (Variant[Integer[0], String]) (defaults to: 10)
  • add_keys_to_agent (Optional[Variant[Boolean, Enum['ask', 'confirm']]]) (defaults to: undef)
  • address_family (Optional[Enum['any', 'inet', 'inet6']]) (defaults to: undef)
  • batch_mode (Optional[Boolean]) (defaults to: undef)
  • bind_address (Optional[IP::Address::NoSubnet]) (defaults to: undef)
  • canonical_domains (Optional[Array[Bodgitlib::Domain, 1]]) (defaults to: undef)
  • canonicalize_fallback_local (Optional[Boolean]) (defaults to: undef)
  • canonicalize_hostname (Optional[Variant[Boolean, Enum['always']]]) (defaults to: undef)
  • canonicalize_max_dots (Optional[Integer[0]]) (defaults to: undef)
  • canonicalize_permitted_cnames (Optional[Array[Tuple[Array[String, 1], Array[String, 1]], 1]]) (defaults to: undef)
  • certificate_file (Optional[Array[String, 1]]) (defaults to: undef)
  • challenge_response_authentication (Optional[Boolean]) (defaults to: undef)
  • check_host_ip (Optional[Boolean]) (defaults to: undef)
  • cipher (Optional[Enum['blowfish', '3des', 'des']]) (defaults to: undef)
  • ciphers (Optional[Array[String, 1]]) (defaults to: undef)
  • clear_all_forwardings (Optional[Boolean]) (defaults to: undef)
  • compression (Optional[Boolean]) (defaults to: undef)
  • compression_level (Optional[Integer[1, 9]]) (defaults to: undef)
  • connection_attempts (Optional[Integer[1]]) (defaults to: undef)
  • connect_timeout (Optional[Integer[0]]) (defaults to: undef)
  • control_master (Optional[Variant[Boolean, Enum['ask', 'auto', 'autoask']]]) (defaults to: undef)
  • control_path (Optional[String]) (defaults to: undef)
  • control_persist (Optional[Boolean]) (defaults to: undef)
  • dynamic_forward (Optional[Array[OpenSSH::Forward::Dynamic, 1]]) (defaults to: undef)
  • escape_char (Optional[Variant[String[1, 1], Pattern[/(?x) ^ \^ [a-zA-Z] $ /], Enum['none']]]) (defaults to: undef)
  • exit_on_forward_failure (Optional[Boolean]) (defaults to: undef)
  • fingerprint_hash (Optional[Array[Enum['md5', 'sha256'], 1]]) (defaults to: undef)
  • forward_agent (Optional[Boolean]) (defaults to: undef)
  • forward_x11 (Optional[Boolean]) (defaults to: undef)
  • forward_x11_timeout (Optional[OpenSSH::TimeFormat]) (defaults to: undef)
  • forward_x11_trusted (Optional[Boolean]) (defaults to: undef)
  • gateway_ports (Optional[Boolean]) (defaults to: undef)
  • global_known_hosts_file (Optional[Array[Stdlib::Absolutepath, 1]]) (defaults to: undef)
  • gssapi_authentication (Optional[Boolean]) (defaults to: undef)
  • gssapi_client_identity (Optional[String]) (defaults to: undef)
  • gssapi_delegate_credentials (Optional[Boolean]) (defaults to: undef)
  • gssapi_key_exchange (Optional[Boolean]) (defaults to: undef)
  • gssapi_renewal_forces_rekey (Optional[Boolean]) (defaults to: undef)
  • gssapi_server_identity (Optional[String]) (defaults to: undef)
  • gssapi_trust_dns (Optional[Boolean]) (defaults to: undef)
  • gssapi_kex_algorithms (Optional[Array[String, 1]]) (defaults to: undef)
  • hash_known_hosts (Optional[Boolean]) (defaults to: undef)
  • hostbased_authentication (Optional[Boolean]) (defaults to: undef)
  • hostbased_key_types (Optional[Array[String, 1]]) (defaults to: undef)
  • host_key_algorithms (Optional[Array[String, 1]]) (defaults to: undef)
  • host_key_alias (Optional[String]) (defaults to: undef)
  • host_name (Optional[String]) (defaults to: undef)
  • identities_only (Optional[Boolean]) (defaults to: undef)
  • identity_agent (Optional[String]) (defaults to: undef)
  • identity_file (Optional[Array[String, 1]]) (defaults to: undef)
  • ignore_unknown (Optional[Array[String, 1]]) (defaults to: undef)
  • ip_qos (Optional[Tuple[OpenSSH::QoS, 1, 2]]) (defaults to: undef)
  • kbd_interactive_authentication (Optional[Boolean]) (defaults to: undef)
  • kbd_interactive_devices (Optional[Array[Enum['bsdauth', 'pam', 'skey'], 1]]) (defaults to: undef)
  • kex_algorithms (Optional[Array[String, 1]]) (defaults to: undef)
  • local_command (Optional[String]) (defaults to: undef)
  • local_forward (Optional[Array[OpenSSH::Forward::Local, 1]]) (defaults to: undef)
  • log_level (Optional[String]) (defaults to: undef)
  • macs (Optional[Array[String, 1]]) (defaults to: undef)
  • no_host_authentication_for_localhost (Optional[Boolean]) (defaults to: undef)
  • number_of_password_prompts (Optional[Integer[1]]) (defaults to: undef)
  • password_authentication (Optional[Boolean]) (defaults to: undef)
  • permit_local_command (Optional[Boolean]) (defaults to: undef)
  • pkcs11_provider (Optional[String]) (defaults to: undef)
  • port (Optional[Bodgitlib::Port]) (defaults to: undef)
  • preferred_authentications (Optional[Array[String, 1]]) (defaults to: undef)
  • protocol (Optional[Array[Integer[1, 2], 1, 2]]) (defaults to: undef)
  • proxy_command (Optional[String]) (defaults to: undef)
  • proxy_jump (Optional[Array[OpenSSH::Proxy, 1]]) (defaults to: undef)
  • proxy_use_fdpass (Optional[Boolean]) (defaults to: undef)
  • pubkey_accepted_key_types (Optional[Array[String, 1]]) (defaults to: undef)
  • pubkey_authentication (Optional[Boolean]) (defaults to: undef)
  • rekey_limit (Optional[OpenSSH::RekeyLimit]) (defaults to: undef)
  • remote_forward (Optional[Array[OpenSSH::Forward::Remote, 1]]) (defaults to: undef)
  • request_tty (Optional[Variant[Boolean, Enum['auto', 'force']]]) (defaults to: undef)
  • revoked_host_keys (Optional[Stdlib::Absolutepath]) (defaults to: undef)
  • rhosts_rsa_authentication (Optional[Boolean]) (defaults to: undef)
  • rsa_authentication (Optional[Boolean]) (defaults to: undef)
  • send_env (Optional[Array[String, 1]]) (defaults to: undef)
  • server_alive_count_max (Optional[Integer[0]]) (defaults to: undef)
  • server_alive_interval (Optional[Integer[0]]) (defaults to: undef)
  • stream_local_bind_mask (Optional[Pattern[/(?x) ^ [0-7]{4} $ /]]) (defaults to: undef)
  • stream_local_bind_unlink (Optional[Boolean]) (defaults to: undef)
  • strict_host_key_checking (Optional[Variant[Boolean, Enum['ask']]]) (defaults to: undef)
  • tcp_keep_alive (Optional[Boolean]) (defaults to: undef)
  • tunnel (Optional[Variant[Boolean, Enum['ethernet', 'point-to-point']]]) (defaults to: undef)
  • tunnel_device (Optional[Variant[Integer[0], Enum['any'], Tuple[Variant[Integer[0], Enum['any']], 2, 2]]]) (defaults to: undef)
  • update_host_keys (Optional[Variant[Boolean, Enum['ask']]]) (defaults to: undef)
  • use_privileged_port (Optional[Boolean]) (defaults to: undef)
  • user (Optional[String]) (defaults to: undef)
  • user_known_hosts_file (Optional[Array[String, 1]]) (defaults to: undef)
  • verify_host_key_dns (Optional[Variant[Boolean, Enum['ask']]]) (defaults to: undef)
  • visual_host_key (Optional[Boolean]) (defaults to: undef)
  • xauth_location (Optional[Stdlib::Absolutepath]) (defaults to: undef)

See Also:



117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
# File 'manifests/client/host.pp', line 117

define openssh::client::host (
  String                                                                                    $host,
  Stdlib::Absolutepath                                                                      $target,
  Variant[Integer[0], String]                                                               $order                                = 10,
  # ssh_config settings below
  Optional[Variant[Boolean, Enum['ask', 'confirm']]]                                        $add_keys_to_agent                    = undef,
  Optional[Enum['any', 'inet', 'inet6']]                                                    $address_family                       = undef,
  Optional[Boolean]                                                                         $batch_mode                           = undef,
  Optional[IP::Address::NoSubnet]                                                           $bind_address                         = undef,
  Optional[Array[Bodgitlib::Domain, 1]]                                                     $canonical_domains                    = undef,
  Optional[Boolean]                                                                         $canonicalize_fallback_local          = undef,
  Optional[Variant[Boolean, Enum['always']]]                                                $canonicalize_hostname                = undef,
  Optional[Integer[0]]                                                                      $canonicalize_max_dots                = undef,
  Optional[Array[Tuple[Array[String, 1], Array[String, 1]], 1]]                             $canonicalize_permitted_cnames        = undef,
  Optional[Array[String, 1]]                                                                $certificate_file                     = undef,
  Optional[Boolean]                                                                         $challenge_response_authentication    = undef,
  Optional[Boolean]                                                                         $check_host_ip                        = undef,
  Optional[Enum['blowfish', '3des', 'des']]                                                 $cipher                               = undef,
  Optional[Array[String, 1]]                                                                $ciphers                              = undef,
  Optional[Boolean]                                                                         $clear_all_forwardings                = undef,
  Optional[Boolean]                                                                         $compression                          = undef,
  Optional[Integer[1, 9]]                                                                   $compression_level                    = undef,
  Optional[Integer[1]]                                                                      $connection_attempts                  = undef,
  Optional[Integer[0]]                                                                      $connect_timeout                      = undef,
  Optional[Variant[Boolean, Enum['ask', 'auto', 'autoask']]]                                $control_master                       = undef,
  Optional[String]                                                                          $control_path                         = undef,
  Optional[Boolean]                                                                         $control_persist                      = undef,
  Optional[Array[OpenSSH::Forward::Dynamic, 1]]                                             $dynamic_forward                      = undef,
  Optional[Variant[String[1, 1], Pattern[/(?x) ^ \^ [a-zA-Z] $ /], Enum['none']]]           $escape_char                          = undef,
  Optional[Boolean]                                                                         $exit_on_forward_failure              = undef,
  Optional[Array[Enum['md5', 'sha256'], 1]]                                                 $fingerprint_hash                     = undef,
  Optional[Boolean]                                                                         $forward_agent                        = undef,
  Optional[Boolean]                                                                         $forward_x11                          = undef,
  Optional[OpenSSH::TimeFormat]                                                             $forward_x11_timeout                  = undef,
  Optional[Boolean]                                                                         $forward_x11_trusted                  = undef,
  Optional[Boolean]                                                                         $gateway_ports                        = undef,
  Optional[Array[Stdlib::Absolutepath, 1]]                                                  $global_known_hosts_file              = undef,
  Optional[Boolean]                                                                         $gssapi_authentication                = undef,
  Optional[String]                                                                          $gssapi_client_identity               = undef,
  Optional[Boolean]                                                                         $gssapi_delegate_credentials          = undef,
  Optional[Boolean]                                                                         $gssapi_key_exchange                  = undef,
  Optional[Boolean]                                                                         $gssapi_renewal_forces_rekey          = undef,
  Optional[String]                                                                          $gssapi_server_identity               = undef,
  Optional[Boolean]                                                                         $gssapi_trust_dns                     = undef,
  Optional[Array[String, 1]]                                                                $gssapi_kex_algorithms                = undef,
  Optional[Boolean]                                                                         $hash_known_hosts                     = undef,
  Optional[Boolean]                                                                         $hostbased_authentication             = undef,
  Optional[Array[String, 1]]                                                                $hostbased_key_types                  = undef,
  Optional[Array[String, 1]]                                                                $host_key_algorithms                  = undef,
  Optional[String]                                                                          $host_key_alias                       = undef,
  Optional[String]                                                                          $host_name                            = undef,
  Optional[Boolean]                                                                         $identities_only                      = undef,
  Optional[String]                                                                          $identity_agent                       = undef,
  Optional[Array[String, 1]]                                                                $identity_file                        = undef,
  Optional[Array[String, 1]]                                                                $ignore_unknown                       = undef,
  Optional[Tuple[OpenSSH::QoS, 1, 2]]                                                       $ip_qos                               = undef,
  Optional[Boolean]                                                                         $kbd_interactive_authentication       = undef,
  Optional[Array[Enum['bsdauth', 'pam', 'skey'], 1]]                                        $kbd_interactive_devices              = undef,
  Optional[Array[String, 1]]                                                                $kex_algorithms                       = undef,
  Optional[String]                                                                          $local_command                        = undef,
  Optional[Array[OpenSSH::Forward::Local, 1]]                                               $local_forward                        = undef,
  Optional[String]                                                                          $log_level                            = undef,
  Optional[Array[String, 1]]                                                                $macs                                 = undef,
  Optional[Boolean]                                                                         $no_host_authentication_for_localhost = undef,
  Optional[Integer[1]]                                                                      $number_of_password_prompts           = undef,
  Optional[Boolean]                                                                         $password_authentication              = undef,
  Optional[Boolean]                                                                         $permit_local_command                 = undef,
  Optional[String]                                                                          $pkcs11_provider                      = undef,
  Optional[Bodgitlib::Port]                                                                 $port                                 = undef,
  Optional[Array[String, 1]]                                                                $preferred_authentications            = undef,
  Optional[Array[Integer[1, 2], 1, 2]]                                                      $protocol                             = undef,
  Optional[String]                                                                          $proxy_command                        = undef,
  Optional[Array[OpenSSH::Proxy, 1]]                                                        $proxy_jump                           = undef,
  Optional[Boolean]                                                                         $proxy_use_fdpass                     = undef,
  Optional[Array[String, 1]]                                                                $pubkey_accepted_key_types            = undef,
  Optional[Boolean]                                                                         $pubkey_authentication                = undef,
  Optional[OpenSSH::RekeyLimit]                                                             $rekey_limit                          = undef,
  Optional[Array[OpenSSH::Forward::Remote, 1]]                                              $remote_forward                       = undef,
  Optional[Variant[Boolean, Enum['auto', 'force']]]                                         $request_tty                          = undef,
  Optional[Stdlib::Absolutepath]                                                            $revoked_host_keys                    = undef,
  Optional[Boolean]                                                                         $rhosts_rsa_authentication            = undef,
  Optional[Boolean]                                                                         $rsa_authentication                   = undef,
  Optional[Array[String, 1]]                                                                $send_env                             = undef,
  Optional[Integer[0]]                                                                      $server_alive_count_max               = undef,
  Optional[Integer[0]]                                                                      $server_alive_interval                = undef,
  Optional[Pattern[/(?x) ^ [0-7]{4} $ /]]                                                   $stream_local_bind_mask               = undef,
  Optional[Boolean]                                                                         $stream_local_bind_unlink             = undef,
  Optional[Variant[Boolean, Enum['ask']]]                                                   $strict_host_key_checking             = undef,
  Optional[Boolean]                                                                         $tcp_keep_alive                       = undef,
  Optional[Variant[Boolean, Enum['ethernet', 'point-to-point']]]                            $tunnel                               = undef,
  Optional[Variant[Integer[0], Enum['any'], Tuple[Variant[Integer[0], Enum['any']], 2, 2]]] $tunnel_device                        = undef,
  Optional[Variant[Boolean, Enum['ask']]]                                                   $update_host_keys                     = undef,
  Optional[Boolean]                                                                         $use_privileged_port                  = undef,
  Optional[String]                                                                          $user                                 = undef,
  Optional[Array[String, 1]]                                                                $user_known_hosts_file                = undef,
  Optional[Variant[Boolean, Enum['ask']]]                                                   $verify_host_key_dns                  = undef,
  Optional[Boolean]                                                                         $visual_host_key                      = undef,
  Optional[Stdlib::Absolutepath]                                                            $xauth_location                       = undef,
) {

  if ! defined(Class['::openssh::client']) {
    fail('You must include the openssh::client base class before using any openssh::client defined resources')
  }

  $_dynamic_forward = $dynamic_forward ? {
    undef   => undef,
    default => $dynamic_forward.map |$x| {
      type($x) ? {
        Type[Tuple] => [bodgitlib::enclose_ipv6($x[0]), $x[1]],
        default     => $x,
      }
    },
  }

  $_local_forward = $local_forward ? {
    undef   => undef,
    default => $local_forward.map |$x| {
      type($x[0]) ? {
        Type[Tuple] => [[bodgitlib::enclose_ipv6($x[0][0]), $x[0][1]], [bodgitlib::enclose_ipv6($x[1][0]), $x[1][1]]],
        default     => [$x[0], [bodgitlib::enclose_ipv6($x[1][0]), $x[1][1]]],
      }
    },
  }

  $_proxy_jump = $proxy_jump ? {
    undef   => undef,
    default => $proxy_jump.map |$x| {
      type($x) ? {
        Type[Tuple] => type($x[1]) ? {
          Type[Integer] => sprintf('%s:%d', bodgitlib::enclose_ipv6($x[0]), $x[1]),
          default       => length($x) ? {
            2 => sprintf('%s@%s', $x[0], bodgitlib::enclose_ipv6($x[1])),
            3 => sprintf('%s@%s:%d', $x[0], bodgitlib::enclose_ipv6($x[1]), $x[2]),
          },
        },
        default     => $x, # XXX bodgitlib::enclose_ipv6($x) instead?
      }
    },
  }

  $_remote_forward = $remote_forward ? {
    undef   => undef,
    default => $remote_forward.map |$x| {
      type($x[0]) ? {
        Type[Tuple] => [[bodgitlib::enclose_ipv6($x[0][0]), $x[0][1]], [bodgitlib::enclose_ipv6($x[1][0]), $x[1][1]]],
        default     => [$x[0], [bodgitlib::enclose_ipv6($x[1][0]), $x[1][1]]],
      }
    },
  }

  $content = template("${module_name}/client/host.erb")

  # Only include a fragment if there some actual settings applied. If the last
  # line of the fragment is the 'Host ...' header, there are none
  if split($content, '\n')[-1] !~ /^Host / {
    ::concat::fragment { "${module_name} client ${target} host ${host}":
      target  => $target,
      order   => "20-${order}",
      content => $content,
    }
  }
}