0

我正在尝试将 facter 参数传递给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]
4

1 回答 1

2

是的。您至少有两个问题需要解决:

1/

问题的直接原因是你用$::command单引号括起来,告诉 Puppet 你的意思是文字 string $::command,而你实际上想要那里的 fact 的值。

2/

您不应该$FACTER_command作为参数传递给puppet apply; 您只需要将其导出为环境变量(您已经这样做了)。

所以:

更改puppet apply为:

puppet apply site.pp 

将您的执行更改为:

exec { 'some_exec':
  command => "/bin/bash -c '/some/path/to/scripts.sh -t some_arg ${::command}'",
  ...
}
于 2017-12-11T10:48:40.793 回答