Gerenciando ~ / .ssh / config para usuários usando o fantoche?

1

Como faço para ajustar a linha "Usuário" em um arquivo ~ / .ssh / config usando arquivos de modelo ERB no Puppet para que ele contenha o nome de usuário correto que corresponda ao nome da conta?

class accounts_global::tharold {
account { 'tharold':
    ensure => present,
    }
file { "/home/tharold/.ssh/config" :
    require => Account['tharold'],
    owner   => 'tharold',
    group   => 'tharold',
    mode    => '0600',
    content => template('accounts_global/user_ssh_config.erb'),
    }
} 

O conteúdo do arquivo user_ssh_config.erb se parece com:

Host ssh.example.com
Port 22
User tharold
IdentityFile ~/.ssh/ssh-key

A pergunta é, qual deve ser o <% = something =% > Parece que substituir "Usuário tharold" no arquivo de modelo com o nome da conta do usuário? Esse arquivo de configuração do ERB será usado por vários usuários, portanto, preciso parametrizar essa parte do arquivo.

Tentando usar <% = @name% > acaba colocando "accounts_global :: tharold" no arquivo.

    
por tgharold 16.09.2014 / 16:56

2 respostas

5

Você precisa alterar sua turma para definir, conforme a seguir, para torná-la reutilizável para outros usuários:

define accounts_global::account () {

  account { $name:
    ensure => present,
  }

  file { "/home/${name}/.ssh/config" :
    require => Account[$name],
    owner   => $name,
    group   => $name,
    mode    => '0600',
    content => template('accounts_global/user_ssh_config.erb'),
  }
}

Use isso para o modelo ~/.ssh/config ERB:

Host ssh.example.com
Port 22
User <%= @name %>
IdentityFile ~/.ssh/ssh-key

Em seguida, adicione isso ao manifesto do Puppet:

accounts_global::account { 'tharold': }

Incidentalmente, você não precisa passar o parâmetro User em sua configuração SSH, a menos que o nome de usuário remoto seja diferente - por padrão, o SSH tenta se conectar usando o nome de usuário atual.

    
por 16.09.2014 / 17:11
0
class accounts_global::tharold {
    account { 'tharold':
        ensure => present,
    }

    $ssh_user = 'tharold'
    file { "/home/tharold/.ssh/config" :
       require => Account['tharold'],
       owner   => 'tharold',
       group   => 'tharold',
       mode    => '0600',
       content => template('accounts_global/user_ssh_config.erb'),
    }
} 

Em seguida, seu modelo se parece com

Host ssh.example.com
Port 22
User <%= ssh_user %>
IdentityFile ~/.ssh/ssh-key
    
por 16.09.2014 / 17:09