Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F9343010
es_facts.rb
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
2 KB
Subscribers
None
es_facts.rb
View Options
require
'net/http'
require
'json'
require
'yaml'
# Helper module to encapsulate custom fact injection
module
EsFacts
# Add a fact to the catalog of host facts
def
self
.
add_fact
(
prefix
,
key
,
value
)
key
=
"
#{
prefix
}
_
#{
key
}
"
.
to_sym
::
Facter
.
add
(
key
)
do
setcode
{
value
}
end
end
# Helper to determine the instance port number
def
self
.
get_port
(
config
)
enabled
=
'http.enabled'
port
=
'http.port'
if
not
config
[
enabled
].
nil?
and
config
[
enabled
]
==
'false'
false
elsif
not
config
[
port
].
nil?
config
[
port
]
else
'9200'
end
end
# Entrypoint for custom fact populator
def
self
.
run
dir_prefix
=
'/etc/elasticsearch'
ports
=
[]
# only when the directory exists we need to process the stuff
return
unless
File
.
directory?
(
dir_prefix
)
Dir
.
foreach
(
dir_prefix
)
do
|
dir
|
next
if
dir
==
'.'
if
File
.
readable?
(
"
#{
dir_prefix
}
/
#{
dir
}
/elasticsearch.yml"
)
config_data
=
YAML
.
load_file
(
"
#{
dir_prefix
}
/
#{
dir
}
/elasticsearch.yml"
)
port
=
get_port
(
config_data
)
next
unless
port
ports
<<
port
end
end
begin
if
ports
.
count
>
0
add_fact
(
'elasticsearch'
,
'ports'
,
ports
.
join
(
','
))
ports
.
each
do
|
port
|
key_prefix
=
"elasticsearch_
#{
port
}
"
uri
=
URI
(
"http://localhost:
#{
port
}
"
)
http
=
Net
::
HTTP
.
new
(
uri
.
host
,
uri
.
port
)
http
.
read_timeout
=
10
http
.
open_timeout
=
2
response
=
http
.
get
(
'/'
)
json_data
=
JSON
.
parse
(
response
.
body
)
next
if
json_data
[
'status'
]
&&
json_data
[
'status'
]
!=
200
add_fact
(
key_prefix
,
'name'
,
json_data
[
'name'
]
)
add_fact
(
key_prefix
,
'version'
,
json_data
[
'version'
][
'number'
]
)
uri2
=
URI
(
"http://localhost:
#{
port
}
/_nodes/
#{
json_data
[
'name'
]
}
"
)
http2
=
Net
::
HTTP
.
new
(
uri2
.
host
,
uri2
.
port
)
http2
.
read_timeout
=
10
http2
.
open_timeout
=
2
response2
=
http2
.
get
(
uri2
.
path
)
json_data_node
=
JSON
.
parse
(
response2
.
body
)
add_fact
(
key_prefix
,
'cluster_name'
,
json_data_node
[
'cluster_name'
]
)
node_data
=
json_data_node
[
'nodes'
].
first
add_fact
(
key_prefix
,
'node_id'
,
node_data
[
0
]
)
nodes_data
=
json_data_node
[
'nodes'
][
node_data
[
0
]]
process
=
nodes_data
[
'process'
]
add_fact
(
key_prefix
,
'mlockall'
,
process
[
'mlockall'
]
)
plugins
=
nodes_data
[
'plugins'
]
plugin_names
=
[]
plugins
.
each
do
|
plugin
|
plugin_names
<<
plugin
[
'name'
]
plugin
.
each
do
|
key
,
value
|
prefix
=
"
#{
key_prefix
}
_plugin_
#{
plugin
[
'name'
]
}
"
add_fact
(
prefix
,
key
,
value
)
unless
key
==
'name'
end
end
add_fact
(
key_prefix
,
'plugins'
,
plugin_names
.
join
(
','
))
end
end
rescue
end
end
end
EsFacts
.
run
File Metadata
Details
Attached
Mime Type
text/x-ruby
Expires
Fri, Jul 4, 1:11 PM (1 w, 20 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3445678
Attached To
R150 puppet-elastic-elasticsearch
Event Timeline
Log In to Comment