Не в состоянии передать аргумент марионетке применить с фактами
Я пытаюсь передать лишний аргумент puppet apply
, Вот что я попробовал:
export FACTER_command="start"
puppet apply site.pp $FACTER_command
и в моем коде у меня есть:
exec { 'some_exec':
command => '/bin/bash -c "/some/path/to/scripts.sh -t some_arg $::command"',
...
Я получаю это сообщение об ошибке:
Error: '/bin/bash -c "/some/path/to/scripts.sh -t some_arg $::command"' returned 1 instead of one of [0]
Error: /Stage[main]/Standard/Exec[some_exec]/returns: change from 'notrun' to ['0'] failed: '/some/path/to/scripts.sh -t some_arg $::command"' returned 1 instead of one of [0]
У кого-нибудь есть идеи по этому поводу?
ОБНОВИТЬ
class standard{
$param_test="/some/path/to/scripts.sh -t some_arg ${::command}"
file{'kick_servers':
ensure => 'file',
path => '/some/path/to/scripts.sh',
owner => 'some_user,
group => 'some_user',
mode => '0755',
notify => Exec['some_exec']
}
exec { 'some_exec':
command => '/bin/bash -c ${param_test}',
cwd => "$home_user_dir",
timeout => 1800
}
}
node default {
include standard
}
И я получаю эту ошибку
Error: '/bin/bash -c $param_test' returned 2 instead of one of [0]
Error: /Stage[main]/Standard/Exec[some_exec]/returns: change from 'notrun' to ['0'] failed: '/bin/bash -c $param_test' returned 2 instead of one of [0]
1 ответ
Решение
Да. У вас есть как минимум две проблемы, которые вам нужно исправить:
1 /
Непосредственной причиной вашей проблемы является то, что вы приложили $::command
внутри одинарных кавычек, говоря Puppet, что вы имеете в виду буквальную строку $::command
, когда вы действительно хотите, чтобы значение этого факта там.
2 /
Вы не должны проходить мимо $FACTER_command
в качестве аргумента puppet apply
; вам нужно только экспортировать его как переменную окружения (что вы уже сделали).
Так:
+ Изменить puppet apply
чтобы:
puppet apply site.pp
Измените ваш exec на
exec { 'some_exec':
command => "/bin/bash -c '/some/path/to/scripts.sh -t some_arg ${::command}'",
...
}