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.