class Chef::Provider::Ifconfig::Debian
Constants
- INTERFACES_DOT_D_DIR
- INTERFACES_FILE
Public Class Methods
Source
# File lib/chef/provider/ifconfig/debian.rb, line 31 def initialize(new_resource, run_context) super(new_resource, run_context) @config_template = %{ <% if new_resource.device -%> <% if new_resource.onboot == "yes" -%> auto <%= new_resource.device %> <% end -%> <% case new_resource.bootproto when "dhcp" -%> iface <%= new_resource.device %> <%= new_resource.family %> dhcp <% when "bootp" -%> iface <%= new_resource.device %> <%= new_resource.family %> bootp <% else -%> iface <%= new_resource.device %> <%= new_resource.family %> static <% if new_resource.target -%> address <%= new_resource.target %> <% end -%> <% if new_resource.mask -%> netmask <%= new_resource.mask %> <% end -%> <% if new_resource.network -%> network <%= new_resource.network %> <% end -%> <% if new_resource.bcast -%> broadcast <%= new_resource.bcast %> <% end -%> <% if new_resource.metric -%> metric <%= new_resource.metric %> <% end -%> <% if new_resource.hwaddr -%> hwaddress <%= new_resource.hwaddr %> <% end -%> <% if new_resource.mtu -%> mtu <%= new_resource.mtu %> <% end -%> <% if new_resource.gateway -%> gateway <%= new_resource.gateway %> <% end -%> <% end -%> <% end -%> } @config_path = "#{INTERFACES_DOT_D_DIR}/ifcfg-#{new_resource.device}" end
Calls superclass method
Chef::Provider::Ifconfig::new
Public Instance Methods
Source
# File lib/chef/provider/ifconfig/debian.rb, line 75 def generate_config enforce_interfaces_dot_d_sanity super end
Calls superclass method
Chef::Provider::Ifconfig#generate_config
Protected Instance Methods
Source
# File lib/chef/provider/ifconfig/debian.rb, line 82 def enforce_interfaces_dot_d_sanity # on ubuntu 18.04+ there's no interfaces file and it uses interfaces.d by default return if ::File.directory?(INTERFACES_DOT_D_DIR) && !::File.exist?(INTERFACES_FILE) # create /etc/network/interfaces.d via dir if it's missing directory INTERFACES_DOT_D_DIR # roll our own file_edit resource, this will not get reported until we have a file_edit resource interfaces_dot_d_for_regexp = INTERFACES_DOT_D_DIR.gsub(/\./, "\\.") # escape dots for the regexp regexp = %r{^\s*source\s+#{interfaces_dot_d_for_regexp}/\*\s*$} return if ::File.exist?(INTERFACES_FILE) && regexp.match(IO.read(INTERFACES_FILE)) converge_by("modifying #{INTERFACES_FILE} to source #{INTERFACES_DOT_D_DIR}") do conf = Chef::Util::FileEdit.new(INTERFACES_FILE) conf.insert_line_if_no_match(regexp, "source #{INTERFACES_DOT_D_DIR}/*") conf.write_file end end