From fafa13358a01e2c3e1e440d99a03d45f0fef2e61 Mon Sep 17 00:00:00 2001 From: Grant Slater Date: Tue, 28 Nov 2023 04:17:08 +0000 Subject: [PATCH] Add test for chef cookbook --- .github/workflows/test-kitchen.yml | 1 + .kitchen.yml | 3 +++ cookbooks/chef/recipes/default.rb | 18 ++++++++++++------ test/integration/chef/inspec/chef_spec.rb | 17 +++++++++++++++++ 4 files changed, 33 insertions(+), 6 deletions(-) create mode 100644 test/integration/chef/inspec/chef_spec.rb diff --git a/.github/workflows/test-kitchen.yml b/.github/workflows/test-kitchen.yml index 1b8541af5..12502a628 100644 --- a/.github/workflows/test-kitchen.yml +++ b/.github/workflows/test-kitchen.yml @@ -25,6 +25,7 @@ jobs: - bind - blog - blogs + - chef - civicrm - clamav - community diff --git a/.kitchen.yml b/.kitchen.yml index 8fdc7b781..cb1c2ffde 100644 --- a/.kitchen.yml +++ b/.kitchen.yml @@ -86,6 +86,9 @@ suites: - name: blogs run_list: - recipe[blogs::default] + - name: chef + run_list: + - recipe[chef::default] - name: civicrm run_list: - recipe[civicrm::default] diff --git a/cookbooks/chef/recipes/default.rb b/cookbooks/chef/recipes/default.rb index 91a91001c..befce968c 100644 --- a/cookbooks/chef/recipes/default.rb +++ b/cookbooks/chef/recipes/default.rb @@ -33,6 +33,18 @@ "amd64" end +os_release = if platform?("debian") && node[:lsb][:release].to_f > 11 + 11 + else + node[:lsb][:release] + end + +# Chef is currently not available for Debian 11 on arm64. +if chef_platform == "debian" && os_release == 11 && chef_arch == "arm64" + chef_platform = "ubuntu" + os_release = "22.04" +end + chef_package = "chef_#{chef_version}-1_#{chef_arch}.deb" directory "/var/cache/chef" do @@ -49,12 +61,6 @@ end end -os_release = if platform?("debian") && node[:lsb][:release].to_f > 11 - 11 - else - node[:lsb][:release] - end - remote_file "#{cache_dir}/#{chef_package}" do source "https://packages.chef.io/files/stable/chef/#{chef_version}/#{chef_platform}/#{os_release}/#{chef_package}" owner "root" diff --git a/test/integration/chef/inspec/chef_spec.rb b/test/integration/chef/inspec/chef_spec.rb new file mode 100644 index 000000000..b1abdc0e7 --- /dev/null +++ b/test/integration/chef/inspec/chef_spec.rb @@ -0,0 +1,17 @@ +describe package("chef") do + it { should be_installed } +end + +describe systemd_service("chef-client") do + it { should be_installed } +end + +describe systemd_service("chef-client.timer") do + it { should be_installed } + it { should be_enabled } +end + +describe command("chef-client --version") do + its("exit_status") { should eq 0 } + its("stdout") { should match /Chef Infra Client/ } +end