From 4d0f4fde4c9a1eee73cf1709641b48aa474ac63b Mon Sep 17 00:00:00 2001 From: Kazuhiro MUSASHI Date: Fri, 11 Oct 2019 20:47:35 +0800 Subject: [PATCH] Add recipe for installing `Alertmanager`. --- cookbooks/prometheus/alertmanager_install.rb | 57 ++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 cookbooks/prometheus/alertmanager_install.rb diff --git a/cookbooks/prometheus/alertmanager_install.rb b/cookbooks/prometheus/alertmanager_install.rb new file mode 100644 index 0000000..b182f28 --- /dev/null +++ b/cookbooks/prometheus/alertmanager_install.rb @@ -0,0 +1,57 @@ +alertmanager_url = '' +alertmanager_bin = '' + +vtag = '' +tag = '' + +# Calculate the Download URL: +begin + require 'net/http' + + uri = URI.parse('https://github.com/prometheus/alertmanager/releases/latest') + + Timeout.timeout(3) do + response = Net::HTTP.get_response(uri) + + vtag = $1 if response.body =~ %r{tag\/(v\d+\.\d+\.\d+)} + tag = vtag.sub(/^v/, '') + + alertmanager_bin = "#{node['alertmanager']['prefix']}#{tag}#{node['alertmanager']['postfix']}" + + alertmanager_url = "#{node['alertmanager']['url']}/#{vtag}/#{alertmanager_bin}" + end +rescue + # Abort the chef client process: + raise 'Cannot connect to http://github.com.' +end + + +# バージョン確認して、アップデート必要かどうか確認 +result = run_command("alertmanager --version 2>&1 | grep #{tag}", error: false) +if result.exit_status != 0 + # Download: + TMP = "/tmp/#{alertmanager_bin}" + + execute "wget #{alertmanager_url} -O #{TMP}" + + # Install: + directory node['alertmanager']['storage'] do + owner 'root' + group 'root' + mode '755' + end + + execute "tar zxf #{TMP} -C #{node['alertmanager']['storage']} --strip-components 1" + + # Change Owner and Permissions: + file "#{node['alertmanager']['storage']}alertmanager" do + owner 'root' + group 'root' + mode '755' + end + + # Create Link + link "#{node['alertmanager']['location']}alertmanager" do + to "#{node['alertmanager']['storage']}alertmanager" + end +end