X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=modules%2Fbase_installation%2Flib%2Ffacter%2Fldapvar.rb;h=3ee6623080709c013f1281ab3f8c39a52eac21da;hb=248bd83ed797f6e0f385e72a56aa7bafdf23d490;hp=ff8e898271c53352b33c763b67bc52831e5ee26a;hpb=503e4cf5c54e3fe4b802038e8917341c4ce803e5;p=perso%2FImmae%2FProjets%2FPuppet.git diff --git a/modules/base_installation/lib/facter/ldapvar.rb b/modules/base_installation/lib/facter/ldapvar.rb index ff8e898..3ee6623 100644 --- a/modules/base_installation/lib/facter/ldapvar.rb +++ b/modules/base_installation/lib/facter/ldapvar.rb @@ -1,46 +1,49 @@ -require 'ldap' -require 'puppet/util/ldap/connection' - -Facter.add("ldapvar") do - setcode do - if Puppet[:node_terminus].to_sym != :ldap - data = [] - else - begin - conn = Puppet::Util::Ldap::Connection.instance - conn.start - connection = conn.connection - rescue ::LDAP::ResultError => e - raise Puppet::ParseError, ("ldapquery(): LDAP ResultError - #{e.message}") - end - - host = Facter.value('ec2_metadata')["hostname"] - base = Puppet[:ldapbase] - scope = ::LDAP::LDAP_SCOPE_SUBTREE - filter = "(objectclass=*)" - - data = { - :self => {}, - :other => [], - } - - connection.search(base, scope, filter) do |entry| - data_ = entry.to_hash - data_['vars'] = (data_[Puppet[:ldapstackedattrs]] || []) - .map { |var| var.split("=", 2) } - .group_by { |(key, value)| key } - .map { |key, value| [key, value.map(&:last)] } - .to_h - - data[:other] << data_ +begin + require 'ldap' + require 'puppet/util/ldap/connection' + + Facter.add("ldapvar") do + setcode do + if Puppet[:node_terminus].to_sym != :ldap + data = [] + else + begin + conn = Puppet::Util::Ldap::Connection.instance + conn.start + connection = conn.connection + rescue ::LDAP::ResultError => e + raise Puppet::ParseError, ("ldapquery(): LDAP ResultError - #{e.message}") + end - if data_["cn"].any? { |cn| cn == host } - data[:self] = data_ + host = Facter.value('ec2_metadata')["hostname"] + base = Puppet[:ldapbase] + scope = ::LDAP::LDAP_SCOPE_SUBTREE + filter = "(objectclass=*)" + + data = { + :self => {}, + :other => [], + } + + connection.search(base, scope, filter) do |entry| + data_ = entry.to_hash + data_['vars'] = (data_[Puppet[:ldapstackedattrs]] || []) + .map { |var| var.split("=", 2) } + .group_by { |(key, value)| key } + .map { |key, value| [key, value.map(&:last)] } + .to_h + + data[:other] << data_ + + if data_["cn"].any? { |cn| cn == host } + data[:self] = data_ + end end - end - data + data + end end end +rescue LoadError + # No facts end -