Command line 通过命令行将参数传递给puppet清单

Command line 通过命令行将参数传递给puppet清单,command-line,parameters,apply,puppet,Command Line,Parameters,Apply,Puppet,我一直在寻找这个问题的答案,但运气不好,但是在运行“apply”命令时是否有一种方法可以将参数传递到puppet清单中,就像在命令行上运行UNIX脚本时传递参数一样 我看到的建议要么将变量保留在清单的顶部以供以后使用,要么将它们存储在hiera文件中。但两者都没有真正回答我提出的问题 如果您有任何关于如何做到这一点的指导,我们将不胜感激 编辑: 我一直在做的一个例子是: $doc_root = "/var/www/example" exec { 'apt-get updat

我一直在寻找这个问题的答案,但运气不好,但是在运行“apply”命令时是否有一种方法可以将参数传递到puppet清单中,就像在命令行上运行UNIX脚本时传递参数一样

我看到的建议要么将变量保留在清单的顶部以供以后使用,要么将它们存储在hiera文件中。但两者都没有真正回答我提出的问题

如果您有任何关于如何做到这一点的指导,我们将不胜感激

编辑:

我一直在做的一个例子是:

$doc_root = "/var/www/example"

exec { 'apt-get update':
 command => '/usr/bin/apt-get update'
}

package { 'apache2':
 ensure  => "installed",
 require => Exec['apt-get update']
}

file { $doc_root:
 ensure => "directory",
 owner => "www-data",
 group => "www-data",
 mode => 644
}

file { "$doc_root/index.html":
   ensure => "present",
   source => "puppet:///modules/main/index.html",
   require => File[$doc_root]
}
正如您所看到的,变量在顶部是硬编码的,而当我试图以相同的方式使用变量时,我需要能够在运行apply命令时传入值。 出于同样的原因,将查找功能与hiera.yaml文件结合使用不能满足我的要求。 我能想到的唯一解决办法是创建一个UNIX脚本,该脚本接受参数,将这些值保存在yaml文件中,然后让脚本执行.pp文件。
但是我希望puppet有一种直接实现这一点的方法。

将变量传递到无类清单中以与
puppet apply
子命令一起使用的常见过程是将值从CLI分配给Facter事实,然后在清单中解析其值。首先从清单头部删除硬编码变量
doc\u root
。然后,将变量修改为如下事实:

file { $facts['doc_root']:
...
file { "${facts['doc_root']}/index.html":
...
require => File["${facts['doc_root']}"] <-- interpolation required due to Puppet DSL inability to resolve hash value as first class expression

请注意,这也会导致将
FACTER\u doc\u root
临时设置为一个环境变量作为副作用。

您能展示一下您到目前为止所做的工作,以便我们提供答案吗?我编辑了主要问题,希望它更清晰。
FACTER_doc_root=/var/www/example puppet apply manifest.pp