マルチマシン設定を使用している場合、プロビジョナーの順序を最も内側から最も外側に逆にすることはできますか? puppet でプロビジョニングする前に、小さなシェル プロビジョナーで /etc/facter/facts.d/ にいくつかのファクトを作成して、現在のセットアップを可能な限り模倣する必要があります。(私は大規模な puppet リポジトリを継承しており、変更を開始する前に Vagrant テストベッドを作成しようとしています。)
パペット設定はすべてのボックスで同じですが、最初にシェル プロビジョナーを実行する必要があります。以下は、私がやりたいことを示す 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