diff --git a/.kitchen.dokken.yml b/.kitchen.dokken.yml index 1f231c9a..f34fceed 100644 --- a/.kitchen.dokken.yml +++ b/.kitchen.dokken.yml @@ -2,7 +2,7 @@ driver: name: dokken privileged: true - chef_version: 12.19.36 + chef_version: <%= ENV['CHEF_VERSION'] || 'current' %> transport: name: dokken diff --git a/.kitchen.yml b/.kitchen.yml index b8bcc71a..dc87e083 100644 --- a/.kitchen.yml +++ b/.kitchen.yml @@ -1,7 +1,7 @@ --- driver: name: vagrant - require_chef_omnibus: 12.21.3 + chef_version: <%= ENV['CHEF_VERSION'] || 'current' %> provisioner: name: policyfile_zero diff --git a/.travis.yml b/.travis.yml index 9e268178..a849ac3c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,10 +23,14 @@ env: # CHEF_VERSION is only for unit tests, no for test-kitchen: - TESTS="style unit" # Split up the test-kitchen run to avoid exceeding 50 minutes: - - TESTS="integration" KITCHEN_INSTANCE=default-centos-6 - - TESTS="integration" KITCHEN_INSTANCE=default-centos-7 - - TESTS="integration" KITCHEN_INSTANCE=default-ubuntu-1404 - - TESTS="integration" KITCHEN_INSTANCE=default-ubuntu-1604 + - CHEF_VERSION=12 TESTS="integration" KITCHEN_INSTANCE=default-centos-6 + - CHEF_VERSION=12 TESTS="integration" KITCHEN_INSTANCE=default-centos-7 + - CHEF_VERSION=12 TESTS="integration" KITCHEN_INSTANCE=default-ubuntu-1404 + - CHEF_VERSION=12 TESTS="integration" KITCHEN_INSTANCE=default-ubuntu-1604 + - CHEF_VERSION=13 TESTS="integration" KITCHEN_INSTANCE=default-centos-6 + - CHEF_VERSION=13 TESTS="integration" KITCHEN_INSTANCE=default-centos-7 + - CHEF_VERSION=13 TESTS="integration" KITCHEN_INSTANCE=default-ubuntu-1404 + - CHEF_VERSION=13 TESTS="integration" KITCHEN_INSTANCE=default-ubuntu-1604 install: echo "skip bundle install" diff --git a/Rakefile b/Rakefile index ac60c872..1b696f68 100755 --- a/Rakefile +++ b/Rakefile @@ -17,7 +17,7 @@ namespace :style do desc 'Run Chef style checks' task :chef do sh '/opt/chefdk/embedded/bin/foodcritic --version' - sh '/opt/chefdk/embedded/bin/foodcritic -f any . --exclude spec -t ~FC059 -t ~FC017' + sh '/opt/chefdk/embedded/bin/foodcritic -f any . --exclude spec' end end diff --git a/libraries/helpers.rb b/libraries/helpers.rb index 52e64508..c2adf6a0 100644 --- a/libraries/helpers.rb +++ b/libraries/helpers.rb @@ -27,11 +27,13 @@ def resource_match?(resource) # # @return [Array] An array of config files for the subconfig def includes(sub_dir) - run_context.resource_collection.map do |resource| - next unless resource_match? resource - next unless resource.action == :add || resource.action.include?(:add) - "#{resource.conf_dir}/#{sub_dir}/#{resource.name}.conf" - end.compact + with_run_context :root do + run_context.resource_collection.map do |resource| + next unless resource_match? resource + next unless resource.action == :add || resource.action.include?(:add) + "#{resource.conf_dir}/#{sub_dir}/#{resource.name}.conf" + end.compact + end end # diff --git a/providers/class.rb b/providers/class.rb index e8e2e1d6..0a33d80b 100644 --- a/providers/class.rb +++ b/providers/class.rb @@ -1,21 +1,24 @@ include Dhcp::Helpers +use_inline_resources action :add do - run_context.include_recipe 'dhcp::_service' + with_run_context :root do + run_context.include_recipe 'dhcp::_service' - directory "#{new_resource.conf_dir}/classes.d #{new_resource.name}" do - path "#{new_resource.conf_dir}/classes.d" - end + directory "#{new_resource.conf_dir}/classes.d #{new_resource.name}" do + path "#{new_resource.conf_dir}/classes.d" + end - template "#{new_resource.conf_dir}/classes.d/#{new_resource.name}.conf" do - cookbook 'dhcp' - source 'class.conf.erb' - variables name: new_resource.name, match: new_resource.match, subclasses: new_resource.subclasses - owner 'root' - group 'root' - mode '0644' - notifies :restart, "service[#{node['dhcp']['service_name']}]", :delayed - end + template "#{new_resource.conf_dir}/classes.d/#{new_resource.name}.conf" do + cookbook 'dhcp' + source 'class.conf.erb' + variables name: new_resource.name, match: new_resource.match, subclasses: new_resource.subclasses + owner 'root' + group 'root' + mode '0644' + notifies :restart, "service[#{node['dhcp']['service_name']}]", :delayed + end - write_include 'classes.d', new_resource.name + write_include 'classes.d', new_resource.name + end end diff --git a/providers/group.rb b/providers/group.rb index c237aea6..02b8ed21 100755 --- a/providers/group.rb +++ b/providers/group.rb @@ -1,33 +1,38 @@ include Dhcp::Helpers +use_inline_resources action :add do - directory "#{new_resource.conf_dir}/groups.d #{new_resource.name}" do - path "#{new_resource.conf_dir}/groups.d" - end + with_run_context :root do + directory "#{new_resource.conf_dir}/groups.d #{new_resource.name}" do + path "#{new_resource.conf_dir}/groups.d" + end - template "#{new_resource.conf_dir}/groups.d/#{new_resource.name}.conf" do - cookbook 'dhcp' - source 'group.conf.erb' - variables( - name: new_resource.name, - parameters: new_resource.parameters, - evals: new_resource.evals, - hosts: new_resource.hosts - ) - owner 'root' - group 'root' - mode '0644' - notifies :restart, "service[#{node['dhcp']['service_name']}]", :delayed - end + template "#{new_resource.conf_dir}/groups.d/#{new_resource.name}.conf" do + cookbook 'dhcp' + source 'group.conf.erb' + variables( + name: new_resource.name, + parameters: new_resource.parameters, + evals: new_resource.evals, + hosts: new_resource.hosts + ) + owner 'root' + group 'root' + mode '0644' + notifies :restart, "service[#{node['dhcp']['service_name']}]", :delayed + end - write_include 'groups.d', new_resource.name + write_include 'groups.d', new_resource.name + end end action :remove do - file "#{new_resource.conf_dir}/groups.d/#{new_resource.name}.conf" do - action :delete - notifies :restart, "service[#{node['dhcp']['service_name']}]", :delayed - end + with_run_context :root do + file "#{new_resource.conf_dir}/groups.d/#{new_resource.name}.conf" do + action :delete + notifies :restart, "service[#{node['dhcp']['service_name']}]", :delayed + end - write_include 'groups.d', new_resource.name + write_include 'groups.d', new_resource.name + end end diff --git a/providers/host.rb b/providers/host.rb index a51fdf1a..8fbc328e 100755 --- a/providers/host.rb +++ b/providers/host.rb @@ -1,34 +1,39 @@ include Dhcp::Helpers +use_inline_resources action :add do - directory "#{new_resource.conf_dir}/hosts.d #{new_resource.name}" do - path "#{new_resource.conf_dir}/hosts.d" - end + with_run_context :root do + directory "#{new_resource.conf_dir}/hosts.d #{new_resource.name}" do + path "#{new_resource.conf_dir}/hosts.d" + end - template "#{new_resource.conf_dir}/hosts.d/#{new_resource.name}.conf" do - cookbook 'dhcp' - source 'host.conf.erb' - variables( - name: new_resource.name, - hostname: new_resource.hostname, - macaddress: new_resource.macaddress, - ipaddress: new_resource.ipaddress, - options: new_resource.options, - parameters: new_resource.parameters - ) - owner 'root' - group 'root' - mode '0644' - notifies :restart, "service[#{node['dhcp']['service_name']}]", :delayed + template "#{new_resource.conf_dir}/hosts.d/#{new_resource.name}.conf" do + cookbook 'dhcp' + source 'host.conf.erb' + variables( + name: new_resource.name, + hostname: new_resource.hostname, + macaddress: new_resource.macaddress, + ipaddress: new_resource.ipaddress, + options: new_resource.options, + parameters: new_resource.parameters + ) + owner 'root' + group 'root' + mode '0644' + notifies :restart, "service[#{node['dhcp']['service_name']}]", :delayed + end + write_include 'hosts.d', new_resource.name end - write_include 'hosts.d', new_resource.name end action :remove do - file "#{new_resource.conf_dir}/hosts.d/#{new_resource.name}.conf" do - action :delete - notifies :restart, "service[#{node['dhcp']['service_name']}]", :delayed - end + with_run_context :root do + file "#{new_resource.conf_dir}/hosts.d/#{new_resource.name}.conf" do + action :delete + notifies :restart, "service[#{node['dhcp']['service_name']}]", :delayed + end - write_include 'hosts.d', new_resource.name + write_include 'hosts.d', new_resource.name + end end diff --git a/providers/shared_network.rb b/providers/shared_network.rb index a7f6b41b..f96c5002 100644 --- a/providers/shared_network.rb +++ b/providers/shared_network.rb @@ -19,32 +19,37 @@ # include Dhcp::Helpers +use_inline_resources action :add do - run_context.include_recipe 'dhcp::_service' + with_run_context :root do + run_context.include_recipe 'dhcp::_service' - directory "#{new_resource.conf_dir}/shared_networks.d #{new_resource.name}" do - path "#{new_resource.conf_dir}/shared_networks.d" - end + directory "#{new_resource.conf_dir}/shared_networks.d #{new_resource.name}" do + path "#{new_resource.conf_dir}/shared_networks.d" + end - template "#{new_resource.conf_dir}/shared_networks.d/#{new_resource.name}.conf" do - cookbook 'dhcp' - source 'shared_network.conf.erb' - variables name: new_resource.name, subnets: new_resource.subnets - owner 'root' - group 'root' - mode '0644' - notifies :restart, "service[#{node['dhcp']['service_name']}]", :delayed - end + template "#{new_resource.conf_dir}/shared_networks.d/#{new_resource.name}.conf" do + cookbook 'dhcp' + source 'shared_network.conf.erb' + variables name: new_resource.name, subnets: new_resource.subnets + owner 'root' + group 'root' + mode '0644' + notifies :restart, "service[#{node['dhcp']['service_name']}]", :delayed + end - write_include 'shared_networks.d', new_resource.name + write_include 'shared_networks.d', new_resource.name + end end action :remove do - file "#{new_resource.conf_dir}/shared_networks.d/#{new_resource.name}.conf" do - action :delete - notifies :restart, "service[#{node['dhcp']['service_name']}]", :delayed - notifies :send_notification, new_resource, :immediately + with_run_context :root do + file "#{new_resource.conf_dir}/shared_networks.d/#{new_resource.name}.conf" do + action :delete + notifies :restart, "service[#{node['dhcp']['service_name']}]", :delayed + notifies :send_notification, new_resource, :immediately + end + write_include 'shared_networks.d', new_resource.name end - write_include 'shared_networks.d', new_resource.name end diff --git a/providers/subnet.rb b/providers/subnet.rb index 1f7115e7..41f40e0e 100755 --- a/providers/subnet.rb +++ b/providers/subnet.rb @@ -1,42 +1,48 @@ include Dhcp::Helpers +use_inline_resources action :add do - run_context.include_recipe 'dhcp::_service' + with_run_context :root do + run_context.include_recipe 'dhcp::_service' - directory "#{new_resource.conf_dir}/subnets.d #{new_resource.name}" do - path "#{new_resource.conf_dir}/subnets.d" - end + directory "#{new_resource.conf_dir}/subnets.d #{new_resource.name}" do + path "#{new_resource.conf_dir}/subnets.d" + end - template "#{new_resource.conf_dir}/subnets.d/#{new_resource.name}.conf" do - cookbook 'dhcp' - source 'subnet.conf.erb' - variables( - subnet: new_resource.subnet, - netmask: new_resource.netmask, - broadcast: new_resource.broadcast, - pools: new_resource.pools, - routers: new_resource.routers, - options: new_resource.options, - evals: new_resource.evals, - key: new_resource.key, - zones: new_resource.zones, - ddns: new_resource.ddns, - next_server: new_resource.next_server - ) - owner 'root' - group 'root' - mode '0644' - notifies :restart, "service[#{node['dhcp']['service_name']}]", :delayed - end + template "#{new_resource.conf_dir}/subnets.d/#{new_resource.name}.conf" do + cookbook 'dhcp' + source 'subnet.conf.erb' + variables( + subnet: new_resource.subnet, + netmask: new_resource.netmask, + broadcast: new_resource.broadcast, + pools: new_resource.pools, + routers: new_resource.routers, + options: new_resource.options, + evals: new_resource.evals, + key: new_resource.key, + zones: new_resource.zones, + ddns: new_resource.ddns, + next_server: new_resource.next_server + ) + owner 'root' + group 'root' + mode '0644' + notifies :restart, "service[#{node['dhcp']['service_name']}]", :delayed + end - write_include 'subnets.d', new_resource.name + write_include 'subnets.d', new_resource.name + end end action :remove do - file "#{new_resource.conf_dir}/subnets.d/#{new_resource.name}.conf" do - action :delete - notifies :restart, "service[#{node['dhcp']['service_name']}]", :delayed - notifies :send_notification, new_resource, :immediately + with_run_context :root do + file "#{new_resource.conf_dir}/subnets.d/#{new_resource.name}.conf" do + action :delete + notifies :restart, "service[#{node['dhcp']['service_name']}]", :delayed + notifies :send_notification, new_resource, :immediately + end + + write_include 'subnets.d', new_resource.name end - write_include 'subnets.d', new_resource.name end