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

12

Estou tentando executar um único módulo assim:

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.

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

    
por Goat Hess 30.12.2011 / 02:38

4 respostas

15

Os comandos em um recurso Exec precisam ser totalmente qualificados (isto é, /usr/bin/test em vez de test ) ou o atributo path desse recurso Exec precisa ser definido.

Se você puder modificar o (s) manifesto (s) de marionete, basta adicionar a seguinte definição para definir um atributo path padrão para todos os recursos Exec como /bin :

Exec { path => "/bin" }

Como alternativa (mais ou menos) suja, você também pode definir o recurso path padrão para qualquer recurso Exec na linha de comando:

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

Ponteiros de documentação:

por 30.12.2011 / 11:32
2

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

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

    
por 30.12.2011 / 02:43
1

Concordo com Shane que o caminho padrão é provavelmente definido em um manifesto com escopo global. Você poderia fazer o mesmo, mas você não pode passá-lo como um 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 em example.pp e, em seguida, use puppet apply -v ... example.pp .

    
por 30.12.2011 / 11:28
1

Você precisa usar um caminho totalmente qualificado.

Por exemplo:

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

ou:

exec { "sample":
  path    => ['/usr/bin', '/usr/sbin', '/bin'],
  command => "test",
}
    
por 06.04.2015 / 21:03

Tags