Forum général.général Puppet - Facts - Besoin d'explication

Posté par . Licence CC By‐SA.
Étiquettes : aucune
0
18
août
2019

Bonjour

Je regarde comment fonctionnent les custom facts dans Puppet.

Sur cette page :

require 'ldap'
Facter.add("platform") do
 setcode do
 host = Facter.value('hostname')
 suffix = Facter.value('ldapsuffix')
 base = "ou=Hosts,#{suffix}"
 server = Puppet[:ldapserver]
 port = LDAP::LDAP_PORT
 scope = LDAP::LDAP_SCOPE_SUBTREE
 filter = "(&(objectclass=puppetclient)(cn=#{host}))"
 attrs = ['platform']
 data = ""
 conn = LDAP::Conn.new(server,port)
 begin
 conn.search(base,scope,filter,attrs) { |entry|
 data = entry.vals('platform')
 } 
 rescue ::LDAP::ResultError => e
 raise Puppet::ParseError, ("ldapquery(): LDAP ResultError - #{e.message}")
 end
 data
 end
end

Je ne comprends pas comment se valorise Puppet[:ldapserver]...
J'ai lu pas mal de posts, où on dit qu'il n'est pas possible de récupérer des variables Puppet dans le code des facts.

Une idée ?

Merci !

David.

  • # Variables Puppet

    Posté par (site web personnel) . Évalué à 2.

    Cela semble fonctionner mais uniquement sur certaines variables exposées par Puppet. Un grep rapide dans la configuration Puppet utilisée pour l'infrastructure Debian (dsa-puppet.git) donne ces couples occurrence/variable :

     1 confdir
     1 environment
     1 environmentpath
     1 libdir
     1 server
     2 ca
     2 cadir
     3 ca_name
     3 default_file_terminus
     3 hostcrl
     3 localcacert
     4 cacrl
     4 modulepath
     6 cacert
     7 vardir
    

    Cela ressemble beaucoup à ce qu'on peut configurer dans /etc/puppet/puppet.conf !

    Dans le cas ldapserver, on pourrait se poser la question d'une éventuelle variable « sortie du chapeau », mais c'est également défini dans Puppet. Dans 4.8.2 que j'ai sous la main, c'est via un appel define_settings dans lib/puppet/defaults.rb.

    (Et si on se pose la question de tricher en ajoutant un test = youhou dans la section [agent] de la configuration Puppet, ça semble être ignoré.)

    Debian Consultant @ DEBAMAX

    • [^] # Re: Variables Puppet

      Posté par . Évalué à 2.

      Dans les facts, Puppet[:foobar] permet d’accéder à la valeur de foobar dans la configuration de Puppet.

      Pour ldapserver, c’est une configuration de Puppet documenté dans la documentation officiel. Ces variable servant à utiliser LDAP comme « external node classifer ».

  • # Merci

    Posté par . Évalué à 1.

    Merci !
    Je vais étudier ça.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.