From 6ebc2b495d9ea920770823cd08ae4eb881b684f7 Mon Sep 17 00:00:00 2001 From: Micah Anderson Date: Sun, 27 Jan 2013 20:23:52 -0500 Subject: add a new fact that provides a fact for each configured ip address, telling you which interface has it (essentially the inverse of the ipaddress_${interface} fact). Switch the hiera lookups of the $interface, which was pulling from the .json to pull instead from the above fact, see #1547 and #1548 --- puppet/modules/site_config/lib/facter/ip_interface.rb | 13 +++++++++++++ puppet/modules/site_openvpn/manifests/init.pp | 2 +- puppet/modules/site_shorewall/manifests/eip.pp | 3 ++- 3 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 puppet/modules/site_config/lib/facter/ip_interface.rb diff --git a/puppet/modules/site_config/lib/facter/ip_interface.rb b/puppet/modules/site_config/lib/facter/ip_interface.rb new file mode 100644 index 00000000..2a4a6b50 --- /dev/null +++ b/puppet/modules/site_config/lib/facter/ip_interface.rb @@ -0,0 +1,13 @@ +require 'facter/util/ip' + +Facter::Util::IP.get_interfaces.each do |interface| + ip = Facter.value("ipaddress_#{interface}") + if ip != nil + Facter.add(ip + "_interface" ) do + setcode do + interface + end + end + end +end + diff --git a/puppet/modules/site_openvpn/manifests/init.pp b/puppet/modules/site_openvpn/manifests/init.pp index 4606179c..a9fa8b2b 100644 --- a/puppet/modules/site_openvpn/manifests/init.pp +++ b/puppet/modules/site_openvpn/manifests/init.pp @@ -1,7 +1,7 @@ class site_openvpn { # parse hiera config $ip_address = hiera('ip_address') - $interface = hiera('interface') + $interface = getvar("$::{ip_address}_interface") #$gateway_address = hiera('gateway_address') $openvpn_config = hiera('openvpn') $openvpn_gateway_address = $openvpn_config['gateway_address'] diff --git a/puppet/modules/site_shorewall/manifests/eip.pp b/puppet/modules/site_shorewall/manifests/eip.pp index 7de1510c..35912dfe 100644 --- a/puppet/modules/site_shorewall/manifests/eip.pp +++ b/puppet/modules/site_shorewall/manifests/eip.pp @@ -5,7 +5,8 @@ class site_shorewall::eip { include site_shorewall::defaults - $interface = hiera('interface') + $ip_address = hiera('ip_address') + $interface = getvar("$::{ip_address}_interface") $ssh_config = hiera('ssh') $ssh_port = $ssh_config['port'] $openvpn_config = hiera('openvpn') -- cgit v1.2.3