Не в состоянии передать аргумент марионетке применить с фактами

Я пытаюсь передать лишний аргумент 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}'",
  ...
}
Другие вопросы по тегам