Можно ли изменить порядок поставщиков с самого внутреннего на самый внешний при использовании настройки с несколькими компьютерами? Я хочу, чтобы небольшой поставщик оболочки создавал некоторые факты в /etc/factor/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