puppet-prod/modules/libs/lib/facter/minio_pool_dns.rb

36 lines
986 B
Ruby

# frozen_string_literal: true
require 'facter'
require 'yaml'
Facter.add('minio_pool_dns') do
setcode do
yaml_file_path = '/opt/puppetlabs/facter/facts.d/minio_facts.yaml'
# check if the YAML file exists
next {} unless File.exist?(yaml_file_path)
# load data from YAML
data = YAML.load_file(yaml_file_path)
minio_members = data['minio_members']
minio_region = data['minio_region']
minio_pool = data['minio_pool']
domain = Facter.value(:networking)['domain']
# create result hash
result = {}
# Check CNAME for each node_id from 1 to minio_members
(1..minio_members).each do |node_id|
cname_target = "#{minio_region}-#{minio_pool}-#{node_id}.#{domain}"
command = "host #{cname_target} > /dev/null 2>&1"
# Using system method to execute the command
# It returns true if the command gives exit status 0 (success), otherwise false
result[cname_target] = system(command)
end
result
end
end