Puppet устанавливает программное обеспечение, определенное в определении другого узла
Я использую Puppet Enterprise.
# puppet master --version
4.8.1
Манифесты реж (/etc/puppetlabs/code/environments/production/manifests
) содержит следующее:
iis.pp
rds.pp
site.pp
У меня есть определение узла в site.pp
как показано ниже:
# cat site.pp
node 'box A' {
include iis
}
Теперь проблема, с которой я сталкиваюсь, заключается в том, что если я создаю новый узел (скажем, блок B) и добавляю его в site.pp, создав пустое определение, как показано ниже, он все равно устанавливает программное обеспечение, которое фактически является частью другого узла ('box А 'в данном случае) определение.
node 'box B' { }
У меня нет никаких include
оператор в site.pp, определенный вне двух приведенных выше определений узлов.
Почему это происходит?
ОБНОВИТЬ:
# cat iis.pp
$iis_features = ['Web-Server','Web-WebServer','Web-Asp-Net45','Web-ISAPI-Ext','Web-ISAPI-Filter','NET-Framework-45-ASPNET']
windowsfeature { $iis_features:
ensure => present,
}
1 ответ
Начиная с Puppet 4, все файлы в среде верхнего уровня manifests/
каталог будет автоматически загружен. Обычно это так, что вы можете определить различные определения узлов или классов и загрузить их все без использования import
директива (используется в Puppet 2 и 3).
В твоем случае, iis.pp
, rds.pp
а также site.pp
анализируются и используются на каждом узле. ( Каталоги: главный манифест (ы) имеет больше информации о том, как это настроено.)
Чтобы исправить это, используйте классы Puppet для группировки вашей конфигурации IIS (windowsfeature
ресурсы) в iis
класс - тогда ваш include iis
будет использовать эту конфигурацию только на "коробке А".
Измените iis.pp, чтобы определить класс:
class iis {
$iis_features = ['Web-Server','Web-WebServer','Web-Asp-Net45','Web-ISAPI-Ext','Web-ISAPI-Filter','NET-Framework-45-ASPNET']
windowsfeature { $iis_features:
ensure => present,
}
}
В идеале, двигаться iis.pp
в /etc/puppetlabs/code/environments/production/modules/iis/manifests/init.pp
находиться в стандартном месте расположения модуля. Это обеспечивает лучшую производительность, так как Puppet не нужно читать iis.pp, пока вы не используете include iis
,