Variáveis com um traço

2

No boneco, os módulos podem ter um traço no nome e, portanto, as variáveis também podem. Mas então, como podemos usar essas variáveis?

Por exemplo, eu tenho uma variável $ssh_mode definida em uma classe google-authenticator::params , então espero poder chamar $google-authenticator::params::ssh_mode , mas o fantoche (0.25.5) corta o traço. Usar ${google-authenticator::params::ssh_mode} também não ajuda.

O que posso fazer para acessar essa variável?

    
por ℝaphink 20.04.2012 / 07:44

2 respostas

4

Você pode descobrir que isso funciona em versões posteriores. Certamente, no Puppet 2.7, a interpolação de variáveis em strings agora inclui traços (o que também causa alguns problemas de compatibilidade).

O problema mais profundo é que você está contando com o tratamento indefinido de módulos com traços. Eu sugiro strongmente que você renomeie o módulo para usar um sublinhado ou nenhum separador. Existem muitos bugs no Puppet (que vêm e vão entre diferentes versões principais) se você não seguir esta recomendação:

Class names, module names, and the names of defined and custom resource types should be restricted to lowercase alphanumeric characters and underscores, and should begin with a lowercase letter; that is, they should match the expression [a-z][a-z0-9_]*. Although some names that violate these restrictions currently work, using them is not recommended.

Em Guia da língua (palavras reservadas e caracteres aceitáveis) .

    
por 20.04.2012 / 07:56
2

Aqui está uma página descrevendo os caracteres permitidos em identificadores de marionetes.

Na seção de nomes de classes, você pode ler:

 …but if you use any hyphens, you screw up qualified variable access.

Na seção variáveis, você pode ler:

* [a-zA-Z0-9_]+ (No unicode nonsense or %@^ etc.)
* i.e. no hyphens, ever.
    
por 20.04.2012 / 08:04

Tags