Hey everyone,
Happy Friday everyone! It's time for another Cookstyle with five new Chef Infra cops:
ChefCorrectness/InvalidDefaultAction
The ChefCorrectness/InvalidDefaultAction cop detects resources that set the default_action to a value that is not a Symbol, Array, or variable.
Enabled by default: True
Autocorrects: Yes
Examples:
Invalid default_action:
default_action 'create'
ChefCorrectness/SupportsMustBeFloat
The ChefCorrectness/SupportsMustBeFloat cop detects supports metadata in the metatdata.rb that specifies a platform version as an Integer and not a Float. Integer platform values will cause errors when the cookbook is uploaded to a Chef Infra Server.
Enabled by default: True
Autocorrects: Yes
Examples:
Supports using an Integer value for a platform version:
supports 'redhat', '< 8'
ChefModernize/ActionMethodInResource
The ChefModernize/ActionMethodInResource detects resources that define resource actions as methods instead of using the custom resource language's action :my_action syntax.
Enabled by default: True
Autocorrects: Yes
Examples:
Resource using a method to define an action:
def action_create
# :create action code here
end
Autocorrected action:
action :create do
# :create action code here
end
ChefModernize/CronDFileOrTemplate
The ChefModernize/CronDFileOrTemplate cop detects cookbooks that use cookbook_file, template, or file resources to create cron jobs in /etc/cron.d instead of using the cron_d resource included in Chef Infra Client 14 and later.
Enabled by default: True
Autocorrects: No
Examples:
Using a template to create a cron.d file:
template '/etc/cron.d/backup' do
source 'cron_backup_job.erb'
owner 'root'
group 'root'
mode '644'
end
Using cron_d to create the same cron job:
cron_d 'backup' do
minute '1'
hour '1'
mailto 'sysadmins@example.com'
command '/usr/local/bin/backup_script.sh'
end
ChefRedundantCode/DoubleCompileTime
The ChefRedundantCode/DoubleCompileTime cop detects resources that are set to run at compile time by using both the compile_time property and the run_action method, which do the same thing.
Enabled by default: True
Autocorrects: Yes
Examples:
Resource compile_time and run_action:
chef_gem 'deep_merge' do
action :nothing
compile_time true
end.run_action(:install)
Autocorrected resource:
chef_gem 'deep_merge' do
action :install
compile_time true
end
Enjoy,
Tim