У меня проблема, когда я пытаюсь установить внешние факты, а затем скопируйте файл шаблона, который заполняется значениями из файла hiera yaml. Файл шаблона зависит от определенных фактов (таких как владелец и группа файла шаблона), которые устанавливаются внешним файлом фактов. Ниже приводится марионеточный код.Puppet: цепочка зависимостей не выполняется в порядке
file {['/etc/facter/','/etc/facter/facts.d']:
ensure => directory,
owner => 'root',
group => 'root',
mode => '0755',
}
file {"/etc/facter/facts.d/domain_facts.sh":
ensure => present,
owner => 'root',
group => 'root',
mode => '0755',
source => $::hostname?{
'hostname1' => 'puppet:///modules/vfecare/hostname1.sh',
},
require => File['/etc/facter/','/etc/facter/facts.d'],
}
file {"/tmp/testing123":
ensure => present,
owner => "${::remoteuser}",
group => "${::remotegroup}",
content => template("vfecare/testscript.erb"),
require => File["/etc/facter/facts.d/domain_facts.sh"]
}
Однако во время выполнения, я вижу, что шаблон, копируется первым в машину кукольного агента и, поскольку шаблон имеет несколько значений, которые нужны из файла внешних фактов, он не может найти и он выдает ошибку о том, «Invalid владельца и групповой ценности ».
Ниже приводится содержание внешних фактов файл
#!/bin/bash
echo "remoteuser=tempuser"
echo "remotegroup=tempuser"
Почему кукольный, кажется, игнорируют цикл зависимости здесь?
Но дело в том, что pluginsync просто скопирует все файлы фактов, а не копирует файлы на основе имени хоста машины. Есть ли способ сделать это? – Iowa
Я предположил, что это был фиктивный пример, извините. Я думаю, вам будет намного лучше использовать Hiera или аналогичную конфигурацию для каждого хоста. Факты касаются обнаружения информации с хоста, поэтому нет смысла разворачивать факты для каждого узла агенту таким образом, а затем читать их обратно к хозяину. –
Хорошее объяснение, но он пытается использовать внешние факты, а не обычные факты. Кроме того, в то время как Hiera имеет больше смысла, чем это с точки зрения дизайна, какой-то ENC или CMDB, доступ к которым Puppet может получить, будет еще более эффективным и чистым. –