Alterando senhas de usuário com Puppet

2

Eu tenho essa classe que, quando executada, deve permitir que um usuário altere sua senha. No entanto, quando eu corro com puppet agent --test , ele dá um erro de sintaxe na linha 9, onde está definindo a senha, mas não sei o que há de errado com essa linha. Aqui está o código que tenho até agora. O "$ 6" é porque é o hash SHA-512, ao contrário de $ 1 para o MD5, que é o padrão.

class pwdchange ($newpwd = '', $targetuser = $::id) {
   $hash  = inline_template("<%
     require 'digest'
     Digest::SHA1.hexdigest(newpwd)
   %>")
   $encryptedpwd = '$6'+template($hash)
   user {"$targetuser":
     ensure   => present
     password => $encryptedpwd
  }
}

Alguém poderia me dizer o que estou fazendo de errado?

    
por Seri 22.07.2013 / 15:14

2 respostas

2

Você precisa finalizar as linhas com vírgulas na definição do recurso, e também é recomendado citar as variáveis:

class pwdchange ($newpwd = '', $targetuser = $::id) {
   $hash  = inline_template("<%
     require 'digest'
     Digest::SHA1.hexdigest(newpwd)
   %>")
   $encryptedpwd = '$6'+template($hash)
   user {"$targetuser":
     ensure   => present,
     password => "$encryptedpwd",
  }
}
    
por 22.07.2013 / 15:21
0

Quando você já estiver usando inline_template , não há necessidade da função template . Além disso, use uma barra invertida para escapar do sinal de dólar literal.

$hash = inline_template(...)
$encryptedpwd = "\${hash}"
user {$targetuser:
    ensure  => present,
    password => $encryptedpwd,
}

Outra possibilidade de construir a cadeia complexa é colocar o prefixo em variável diferente. Usar aspas simples preserva o dólar como um caractere literal:

$hash = inline_template(...)
$prefix = '$6'
$encryptedpwd = "${prefix}${hash}"
    
por 23.07.2013 / 15:00