como definir o caminho ao aplicar o módulo fantoche único?

12

Estou tentando executar um único módulo como este:

puppet apply --verbose --modulepath=moduleshere --noop -e 'include myclass'

No entanto, recebo esse tipo de erro, indicando que o caminho não está definido

Parameter unless failed: '[ -e "${logfile}" ]' is not qualified and no path was specified. Please qualify the command or specify a path.

Não quero especificar explicitamente o caminho em todos os locais e funciona bem quando executado como parte de uma marionete completa. Como posso especificar o caminho ao executar um único módulo?

Cabra Hess
fonte
1
Você poderia aceitar a resposta apropriada?
Kenorb #

Respostas:

15

Os comandos em um Execrecurso precisam ser totalmente qualificados (ou seja, em /usr/bin/testvez de test) ou o pathatributo desse Execrecurso deve ser definido.

Se você pode modificar o (s) manifesto (s) Puppet, você pode simplesmente adicionar a seguinte definição para definir um pathatributo padrão para todos os Execrecursos /bin:

Exec { path => "/bin" }

Como uma solução alternativa (mais ou menos) suja, você também pode definir o padrão pathpara qualquer Execrecurso na linha de comando:

$ puppet apply --verbose -e 'Exec { path => "/bin" }' your_manifest.pp

Ponteiros de documentação:

joschi
fonte
2

Isso .. não deve funcionar como parte de uma execução completa. Ele precisa de um caminho completo para o executável no unlesscomando. Talvez você tenha definido um caminho em um arquivo global que faz parte de suas execuções completas?

Tente unless => '/usr/bin/[ -e "${logfile}" ]', em vez disso.

Shane Madden
fonte
1

Concordo com Shane que o caminho padrão provavelmente está definido em um manifesto com escopo global. Você pode fazer o mesmo, mas não pode passar isso como argumento, então use stdin:

$ puppet apply -v --modulepath=moduleshere --noop <<EOF
Exec { path => "/bin:/sbin:/usr/bin:/usr/sbin" }
include myclass
EOF

ou coloque o Exec e inclua linhas example.ppe depois use puppet apply -v ... example.pp.

Dominic Cleal
fonte
1

Você precisa usar o caminho completo.

Por exemplo:

exec { "sample":
  command => "/usr/bin/test",
}

ou:

exec { "sample":
  path    => ['/usr/bin', '/usr/sbin', '/bin'],
  command => "test",
}
kenorb
fonte