diff options
Diffstat (limited to 'puppet')
4 files changed, 27 insertions, 5 deletions
diff --git a/puppet/modules/site_config/lib/facter/dhcp_enabled.rb b/puppet/modules/site_config/lib/facter/dhcp_enabled.rb new file mode 100644 index 00000000..33220da3 --- /dev/null +++ b/puppet/modules/site_config/lib/facter/dhcp_enabled.rb @@ -0,0 +1,22 @@ +require 'facter' +def dhcp_enabled?(ifs, recurse=true) +  dhcp = false +  included_ifs = [] +  if FileTest.exists?(ifs) +    File.open(ifs) do |file| +      dhcp = file.enum_for(:each_line).any? do |line| +        if recurse && line =~ /^\s*source\s+([^\s]+)/ +          included_ifs += Dir.glob($1) +        end +        line =~ /inet\s+dhcp/ +      end +    end +  end +  dhcp || included_ifs.any? { |ifs| dhcp_enabled?(ifs, false) } +end +Facter.add(:dhcp_enabled) do +  confine :osfamily => 'Debian' +  setcode do +    dhcp_enabled?('/etc/network/interfaces') +  end +end diff --git a/puppet/modules/site_config/manifests/default.pp b/puppet/modules/site_config/manifests/default.pp index 790b5a16..a20ffc3b 100644 --- a/puppet/modules/site_config/manifests/default.pp +++ b/puppet/modules/site_config/manifests/default.pp @@ -25,10 +25,7 @@ class site_config::default {    # i.e. openstack/aws nodes, vagrant nodes    # fix dhclient from changing resolver information -  if $::ec2_instance_id { -    include site_config::dhclient -  } -  if $::virtual == 'virtualbox' { +   if $::dhcp_enabled == 'true' {      include site_config::dhclient    } diff --git a/puppet/modules/site_config/manifests/dhclient.pp b/puppet/modules/site_config/manifests/dhclient.pp index 7ac0caf3..dbe2ef1c 100644 --- a/puppet/modules/site_config/manifests/dhclient.pp +++ b/puppet/modules/site_config/manifests/dhclient.pp @@ -17,7 +17,9 @@ class site_config::dhclient {    exec { 'reload_dhclient':      refreshonly => true, -    command     => '/usr/local/sbin/reload_dhclient'; +    command     => '/usr/local/sbin/reload_dhclient', +    before      => Class['site_config::resolvconf'], +    require     => File['/usr/local/sbin/reload_dhclient'],    }    file { '/etc/dhcp/dhclient-enter-hooks.d/disable_resolvconf': diff --git a/puppet/modules/site_couchdb/manifests/bigcouch.pp b/puppet/modules/site_couchdb/manifests/bigcouch.pp index 16593ec7..82c85b52 100644 --- a/puppet/modules/site_couchdb/manifests/bigcouch.pp +++ b/puppet/modules/site_couchdb/manifests/bigcouch.pp @@ -17,6 +17,7 @@ class site_couchdb::bigcouch {    # stunnel must running correctly before bigcouch dbs can be set up.    #    Class['site_config::default'] +    -> Class['site_config::resolvconf']      -> Class['couchdb::bigcouch::package::cloudant']      -> Service['shorewall']      -> Exec['refresh_stunnel']  | 
