Add community prometheus cookbook
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
provides :prometheus_install
|
||||
unified_mode true
|
||||
|
||||
use '_partial/_common'
|
||||
use '_partial/_prometheus'
|
||||
|
||||
default_action :install
|
||||
|
||||
action_class do
|
||||
include PrometheusCookbook::Helpers
|
||||
end
|
||||
|
||||
action :install do
|
||||
user new_resource.user do
|
||||
system true
|
||||
shell '/bin/false'
|
||||
home new_resource.install_dir
|
||||
not_if { new_resource.use_existing_user || new_resource.user == 'root' }
|
||||
end
|
||||
|
||||
directory new_resource.install_dir do
|
||||
owner new_resource.user
|
||||
group new_resource.group
|
||||
mode '0755'
|
||||
recursive true
|
||||
end
|
||||
|
||||
directory new_resource.log_dir do
|
||||
owner new_resource.user
|
||||
group new_resource.group
|
||||
mode '0755'
|
||||
recursive true
|
||||
end
|
||||
|
||||
directory new_resource.storage_path do
|
||||
owner new_resource.user
|
||||
group new_resource.group
|
||||
mode '0755'
|
||||
recursive true
|
||||
end
|
||||
|
||||
case new_resource.install_method
|
||||
when 'binary'
|
||||
package %w(tar bzip2)
|
||||
|
||||
ark install_dir_name(new_resource.install_dir) do
|
||||
url new_resource.binary_url
|
||||
checksum new_resource.checksum
|
||||
version new_resource.version
|
||||
prefix_root Chef::Config['file_cache_path']
|
||||
path install_dir_parent(new_resource.install_dir)
|
||||
owner new_resource.user
|
||||
group new_resource.group
|
||||
extension new_resource.file_extension unless new_resource.file_extension.empty?
|
||||
action :put
|
||||
end
|
||||
when 'shell_binary'
|
||||
package %w(tar bzip2)
|
||||
|
||||
remote_file "#{Chef::Config[:file_cache_path]}/prometheus-#{new_resource.version}.tar.gz" do
|
||||
source new_resource.binary_url
|
||||
checksum new_resource.checksum
|
||||
action :create
|
||||
notifies :run, 'execute[install_prometheus_archive]', :immediately
|
||||
end
|
||||
|
||||
execute 'install_prometheus_archive' do
|
||||
command "tar -xzf #{Chef::Config[:file_cache_path]}/prometheus-#{new_resource.version}.tar.gz -C #{new_resource.install_dir} --strip-components=1"
|
||||
action :nothing
|
||||
end
|
||||
when 'source'
|
||||
build_essential 'install compilation tools'
|
||||
|
||||
package %w(curl git-core mercurial gzip sed)
|
||||
|
||||
git "#{Chef::Config[:file_cache_path]}/prometheus-#{new_resource.version}" do
|
||||
repository new_resource.source_repository
|
||||
revision new_resource.source_revision
|
||||
action :checkout
|
||||
end
|
||||
|
||||
bash 'compile_prometheus_source' do
|
||||
cwd "#{Chef::Config[:file_cache_path]}/prometheus-#{new_resource.version}"
|
||||
environment(
|
||||
'PATH' => "/usr/local/go/bin:#{ENV.fetch('PATH', nil)}",
|
||||
'GOPATH' => '/opt/go:/opt/go/src/github.com/prometheus/promu/vendor'
|
||||
)
|
||||
code <<~EOH
|
||||
make build
|
||||
mv prometheus #{new_resource.install_dir}
|
||||
cp -R console_libraries #{new_resource.install_dir}
|
||||
cp -R consoles #{new_resource.install_dir}
|
||||
EOH
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user