Puppet Function: dns_lookup

Defined in:
lib/puppet/parser/functions/dns_lookup.rb
Function type:
Ruby 3.x API

Overview

dns_lookup()Any

Does a DNS lookup and returns an array of addresses.

Returns:

  • (Any)


5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/puppet/parser/functions/dns_lookup.rb', line 5

newfunction(:dns_lookup, :type => :rvalue, :arity => 1, :doc => <<-EOS
  Does a DNS lookup and returns an array of addresses.
  EOS
) do |arguments|
  require 'resolv'

  res = Resolv::DNS.new
  arg = arguments[0]

  ret = if arg.is_a? Array
    arg.collect { |e| res.getaddresses(e).map(&:to_s) }.flatten
  else
    res.getaddresses(arg).collect { |r| r.to_s }
  end
  raise Resolv::ResolvError, "DNS result has no information for #{arg}" if ret.empty?
  ret
end