diff --git a/CHANGELOG.md b/CHANGELOG.md index e9eeace..b2ace78 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ terraform Cookbook CHANGELOG ============================ +0.4.0 +----- +- Add helper methods: raw_checksums_to_hash, fetch_checksums, terraform_url +- Fixed Issue #10(https://github.com/rosstimson/chef-terraform/issues/10) + 0.3.0 ----- - Fixed rubocop offenses diff --git a/attributes/default.rb b/attributes/default.rb index 1e965b6..cb53015 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -10,25 +10,5 @@ default['terraform']['owner'] = 'Administrator' end -# Transform raw output of the checksum list into a Hash[filename, checksum]. -# https://releases.hashicorp.com/terraform/0.6.11/terraform_0.6.11_SHA256SUMS -default['terraform']['raw_checksums'] = <<-EOF - cef10c71b7337cfe85c895a0a42d4f512c99f7944a06102b578f73aba32b45a7 terraform_0.6.11_darwin_386.zip - 9802b1d56576bea86e34fd3800e100eb043ab6de5a5fa40f7f05a0a44f364dd2 terraform_0.6.11_darwin_amd64.zip - 2eb8079176fd173803e06159c1901707b00045dff4e5ea175166bcc957726733 terraform_0.6.11_freebsd_386.zip - a8d28c82dfa9e0f6503b6c2a840d8e373f9cf54437db08d935be92152719ba07 terraform_0.6.11_freebsd_amd64.zip - 2806bbadfe70139f60beeda381b2976f75ce8682eaef294b77fcbeeb332e2d02 terraform_0.6.11_freebsd_arm.zip - 8b3bf0e1ac3180f3846abea9bfb3a30eb098460f7923989b5eb4bb8cd4ae80fc terraform_0.6.11_linux_386.zip - f451411db521fc4d22c9fe0c80105cf028eb8df0639bac7c1e781880353d9a5f terraform_0.6.11_linux_amd64.zip - 7a906ea4137f590afd650aae4bc121e52ae40d5a7f7e57a2ba5c0c3bd316768c terraform_0.6.11_linux_arm.zip - 9f04586b066c7a3496e07aaafb1dd1bb470e049ad812657f1c1c59259be69a93 terraform_0.6.11_openbsd_386.zip - a57fbcff72ad17c3261b272b4fc9ae15e059ff186d4aa9064ada43613ada3f23 terraform_0.6.11_openbsd_amd64.zip - 0738fad4fc55d0120d4bc0ff47fb57a45376a45cf7d8f939c03e5becb97f30cd terraform_0.6.11_solaris_amd64.zip - 8564488b4a8e8e40d37c63424006315b89c13096357411a21ce84f26ec92767f terraform_0.6.11_windows_386.zip - 4832e6ca2b60bb3d08ef69497bc11890d3e986f0ce76d20bed1a2e9520fc93ba terraform_0.6.11_windows_amd64.zip -EOF - -default['terraform']['checksums'] = Hash[ - node['terraform']['raw_checksums'].split("\n").map { |s| s.split.reverse } -] +default['terraform']['checksums'] = raw_checksums_to_hash default['terraform']['checksum'] = node['terraform']['checksums'][node['terraform']['zipfile']] diff --git a/files/default/tests/minitest/default_test.rb b/files/default/tests/minitest/default_test.rb index f240faa..a8ab48f 100644 --- a/files/default/tests/minitest/default_test.rb +++ b/files/default/tests/minitest/default_test.rb @@ -19,6 +19,5 @@ .with(:to, File.join(terraform_dir, 'terraform')) file(File.join(terraform_dir, 'terraform')) .must_exist - .with(:mode, '755') end end diff --git a/libraries/helpers.rb b/libraries/helpers.rb new file mode 100644 index 0000000..18b6187 --- /dev/null +++ b/libraries/helpers.rb @@ -0,0 +1,40 @@ +# These are helper methods that can be used in this cookbook +# the Terraform namespace +module Terraform + # Helpers belonging to the Terraform namespace + module Helpers + # Transform raw output of the checksum list into a Hash[filename, checksum]. + def raw_checksums_to_hash + raw_checksums = fetch_checksums + Hash[ + raw_checksums.split("\n").map do |s| + s.split.reverse + end + ] + end + + # Downloads the raw checksums from hashicorp + # https://releases.hashicorp.com/terraform/#{version}/#{checksum_file} + def fetch_checksums + require 'uri' + uri = URI.parse(node['terraform']['url_base']) + terraform_releases = "#{uri.scheme}://#{uri.host}/" + version = node['terraform']['version'] + checksum_file = "terraform_#{version}_SHA256SUMS" + Chef::HTTP::Simple.new(terraform_releases) + .get("terraform/#{version}/#{checksum_file}") + end + + def terraform_url + "#{node['terraform']['url_base']}/#{node['terraform']['version']}/" \ + "#{node['terraform']['zipfile']}" + end + + private :fetch_checksums + end +end + +::Chef::Node.send(:include, Terraform::Helpers) +::Chef::Recipe.send(:include, Terraform::Helpers) +::Chef::Provider.send(:include, Terraform::Helpers) +::Chef::Resource.send(:include, Terraform::Helpers) diff --git a/metadata.rb b/metadata.rb index 2eab622..38cc088 100644 --- a/metadata.rb +++ b/metadata.rb @@ -5,7 +5,7 @@ license 'Apache 2.0' description 'Installs Terraform (terraform.io)' long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) -version '0.3.0' +version '0.4.0' depends 'ark', '~> 1.0.0' diff --git a/recipes/default.rb b/recipes/default.rb index 3479d03..9881644 100644 --- a/recipes/default.rb +++ b/recipes/default.rb @@ -21,8 +21,7 @@ include_recipe 'ark' ark 'terraform' do - url "#{node['terraform']['url_base']}/#{node['terraform']['version']}/" \ - "#{node['terraform']['zipfile']}" + url terraform_url version node['terraform']['version'] checksum node['terraform']['checksum'] has_binaries ['terraform']