Interpolação de string Puppet com chamada de função e variável como parâmetro

1

Tentando construir uma string.

Eu posso fazer:

"Blah blah ${::osfamily} blah blah"

"Blah blah ${$::osfamily} blah blah"

Mas qual é a sintaxe para chamar uma função com uma variável como parâmetro e ter trabalho de interpolação de string?

Nenhuma das seguintes trabalhou:

"Blah blah ${downcase($::osfamily)} blah blah"

"Blah blah ${downcase($osfamily)} blah blah"

"Blah blah ${downcase(::osfamily)} blah blah"

"Blah blah ${$downcase(osfamily)} blah blah"

"Blah blah ${$downcase($osfamily)} blah blah" e assim por diante.

Tudo que eu recebo é: Error 400 on SERVER: Syntax error at '('; expected ')'

Isso é possível na língua dos marionetes?

    
por Swartz 30.09.2015 / 01:20

3 respostas

2

Não é possível. A linguagem de marionetes é um pouco idiossincrática, em que muitas coisas que você acha que funcionariam ... não. Você precisará atribuir o valor de retorno da função a uma variável e, em seguida, interpolar essa variável na string, assim:

$downcased_osfamily = downcase($::osfamily)
"Blah blah ${downcased_osfamily} blah blah"

É claro que uma string por si só não serve para nada, então presumivelmente você está atribuindo essa string a uma variável própria ou usando-a como o valor para um atributo de recurso.

    
por 30.09.2015 / 01:37
3

não foi possível, mas é agora. Os seguintes trabalhos usam o seu exemplo:

notice("Blah blah ${downcase($::osfamily)} blah blah")

Isso foi testado no Puppet 4.10.x, está documentado já em 4.6: link

    
por 09.04.2018 / 18:30
0

além da resposta do bogit, você também pode usar a seguinte sintaxe

puppet apply -e 'notice("Blah blah ${::osfamily.downcase} blah blah")'

você também pode querer usar o hash de fatos mais recentes

puppet apply -e 'notice("Blah blah ${facts['os']['family'].downcase} blah blah")'
    
por 11.04.2018 / 16:33

Tags