# limitations under the License.
#
+include_recipe "git"
include_recipe "networking"
if node.internal_ipaddress
end
directory "/opt/prometheus" do
+ action :delete
owner "root"
group "root"
mode "755"
+ recursive true
+ not_if { ::Dir.exist?("/opt/prometheus/.git") }
+end
+
+git "/opt/prometheus" do
+ action :sync
+ repository "https://github.com/openstreetmap/prometheus-exporters.git"
+ revision "main"
+ depth 1
+ user "root"
+ group "root"
end
prometheus_exporter "node" do
- version "1.0.1"
port 9100
options "--collector.ntp --collector.processes --collector.interrupts"
end
default_action :create
property :exporter, :kind_of => String, :name_property => true
-property :github_owner, :kind_of => String, :default => "prometheus"
-property :github_project, :kind_of => String
-property :version, :kind_of => String, :required => [:create]
property :port, :kind_of => Integer, :required => [:create]
property :listen_switch, :kind_of => String, :default => "web.listen-address"
property :options, :kind_of => [String, Array]
action :create do
- package "prometheus-#{new_resource.exporter}-exporter" do
- action :purge
- end
-
- remote_file archive_file do
- action :create_if_missing
- source archive_url
- owner "root"
- group "root"
- mode "644"
- backup false
- end
-
- execute archive_file do
- action :nothing
- command "tar -xf #{archive_file}"
- cwd "/opt/prometheus"
- user "root"
- group "root"
- subscribes :run, "remote_file[#{archive_file}]"
- end
-
systemd_service service_name do
description "Prometheus #{new_resource.exporter} exporter"
type "simple"
action [:disable, :stop]
end
- package package_name do
- action :purge
+ systemd_service service_name do
+ action :delete
end
end
-action_class do
- def github_project
- new_resource.github_project || "#{new_resource.exporter}_exporter"
- end
-
- def archive_url
- "https://github.com/#{new_resource.github_owner}/#{github_project}/releases/download/v#{new_resource.version}/#{github_project}-#{new_resource.version}.linux-amd64.tar.gz"
- end
-
- def archive_file
- "#{Chef::Config[:file_cache_path]}/prometheus-#{new_resource.exporter}-exporter-#{new_resource.version}.tar.gz"
+action :restart do
+ service service_name do
+ action :restart
end
+end
+action_class do
def service_name
"prometheus-#{new_resource.exporter}-exporter"
end
def executable_path
- "/opt/prometheus/#{github_project}-#{new_resource.version}.linux-amd64/#{github_project}"
+ "/opt/prometheus/exporters/#{new_resource.exporter}/#{new_resource.exporter}_exporter"
end
def executable_options
end
end
end
+
+def after_created
+ subscribes :restart, "git[/opt/prometheus]"
+end