Report abuse

root@junglist /tmp# cat /var/lib/puppet/lib/puppet/parser/functions/interface_alias.rb

module Puppet::Parser::Functions
        newfunction(:interface_alias, :type => :rvalue) do |args|
                interface_alias = args[0]
                $stderr = File.open("/tmp/plugin.output","w")
                 interface_data = `/sbin/ip address show label #{interface_alias}`.split
                 if interface_data[1].nil?
                     "_default_"
                 else
                     interface_data[1].gsub(/\/\d+/, '')
                 end
        end
end

## root@junglist /tmp# cat ./test.pp
## #!/usr/bin/env puppet
## $foo = interface_alias("eth0:0")
## notify { $foo: }

## root@junglist /tmp# ./test.pp
## notice: 123.100.70.2
## root@junglist /tmp# ip addr show label eth0:0
##     inet 123.100.70.2/29 brd 123.100.70.7 scope global secondary eth0:0