使用多机设置时,是否可以将配置程序的顺序从最内到最外颠倒?我想要一个小的 shell 配置器在使用 puppet 配置之前在 /etc/facter/facts.d/ 中创建一些事实,以尽可能地模仿我们当前的设置。(我继承了一个大型 puppet 存储库,并在开始更改之前尝试为它创建一个 Vagrant 测试平台。)
每个盒子的 puppet 设置都相同,但需要首先运行 shell 配置程序。这是一个示例 Vagrantfile 来显示我想要做什么(更改了一些名称以保护无辜者):
$facts =<<FACTS
set -x
mkdir -p /etc/facter/facts.d
echo role=$1 > /etc/facter/facts.d/role.txt
echo location=$2 > /etc/facter/facts.d/location.txt
echo environment=$3 > /etc/facter/facts.d/environment.txt
FACTS
Vagrant.configure(2) do |config|
config.vm.box = "centos-6.6"
config.vm.synced_folder "hiera", "/etc/puppet/hiera"
config.vm.provision :puppet do |puppet|
puppet.manifest_file = "site.pp"
puppet.module_path = ["modules", "internal"]
puppet.hiera_config_path = "hiera.yaml"
puppet.options = "--test"
end
config.vm.define :foo1 do |c|
c.vm.hostname = "foo-1.vagrant"
c.vm.provision :shell, inline: $facts, args: "foo testing stage"
end
config.vm.define :bar do |c|
c.vm.hostname = "bar-1.vagrant"
c.vm.provision :shell, inline: $facts, args: "bar testing stage"
end
# ... more machines omitted ...
end