windows - Puppet installation software defineret i en anden node definition

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg bruger Puppet Enterprise.


# puppet master --version
4.8.1


Manifests dir (/etc/puppetlabs/code/environments/production/manifests) indeholder følgende:


iis.pp
rds.pp
site.pp


Jeg har en noddefinition i site.pp som vist nedenfor:


# cat site.pp
node 'box A' {
    include iis
}


Nu er det problem, jeg står over for, at hvis jeg opretter en ny node (sig box B) og tilføjer den til site.pp ved at oprette en tom definition som vist nedenfor, installerer den stiller software, der rent faktisk er del af en anden node ('boks A' i denne sag) definition.


node 'box B' { }


Jeg har ikke nogen include erklæring i site.pp defineret uden for de ovennævnte to nodedefinitioner.


Hvorfor sker det her?


UPDATE:


# 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,
}

Bedste reference


Siden Puppet 4 vil alle filer i topmiljøets manifests/ katalog automatisk blive indlæst. Normalt er det sådan, at du kan definere forskellige nodedefinitioner eller klasser og få dem alle indlæst uden at bruge import -direktivet (anvendt i Puppet 2 og 3).


I dit tilfælde analyseres iis.pp, rds.pp og site.pp og bruges på hver knude. (Kataloger: De vigtigste manifest (er) indeholder nogle flere oplysninger om, hvordan dette er konfigureret.) [21]


Hvis du vil rette det, skal du bruge dukkeklasser til at gruppere din IIS-konfiguration (windowsfeature ressourcerne til en iis klasse - så vil din include iis kun bruge denne konfiguration på 'boks A'. [22]


Skift iis.pp for at definere en klasse:


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,
  }
}


Ideelt set skal du flytte iis.pp til /etc/puppetlabs/code/environments/production/modules/iis/manifests/init.pp for at være i standardmodulets placering. Dette giver bedre ydeevne, da dukkerne ikke behøver at læse iis.pp, før du bruger include iis.