puppet tentando definir variáveis de classe globais

2

Estou tentando usar o fantoche como um gerenciamento de usuários unix.

Aqui está a classe que criei para adicionar novos usuários:

class unix_accounts( $username, $forename, $name, $email, $uid) {

user { $username:
    comment => '$forename $name',
    home    => '/home/$username',
    shell   => '/bin/bash',
    uid     => $uid,
    groups  => [$username, 'sudo'],
}

Eu gostaria, basicamente, que e-mail e nome de usuário podem ser deduzidos de $ name e $ forename, para definir essas variáveis na classe unix_accounts. Eu tentei isso:

$username = $forename[0].chr.downcase+name.downcase
$email    = $forename.downcase+'.'+$name.downcase+'@localnet.lan'

Mas o teste puppetd no lado do cliente falha no primeiro ponto (.) com a seguinte mensagem:

Error 400 on server: Syntax error at '.'; expected '}' at ....

Isso não tem nada a ver com ruby, porque eu tentei antes com o irb, parece estar relacionado apenas com a sintaxe do puppet. É possível criar essas variáveis dentro de uma classe? Como fazer isso?

Muito obrigado

    
por philippe 05.09.2012 / 15:38

1 resposta

1
$username = $forename[0].chr.downcase+name.downcase $email
$forename.downcase+'.'+$name.downcase+'@localnet.lan'

O que faz você pensar que isso funcionará? Nenhuma dessas funções são fornecidas pela linguagem Puppet.

Dê uma olhada no link para ver o que você pode fazer com strings diretamente no Puppet (não muito ). Em seguida, dê uma olhada no link para ver como usar modelos do ERB, o que resolverá seu problema.

Além disso, e isso não é problema seu, mas é um problema: se você quer que suas strings interpolar variáveis, então você tem que usar aspas duplas, assim:

user { $username:
    comment => "$forename $name",
    ...
    
por 05.09.2012 / 16:16