puppet-prod/site/profiles/lib/facter/minio_pool_dns.rb
Ben Vincent d8751ac6c8 feat: add minio profile
- add additional modules in Puppetfile
- update puppetlabs-lvm to 2.1.0
- add facts.d base path to hieradata
- add infra/storage and infra/storage/minio role data to hieradata
- add new facts for minio setup status
- add a static yaml minio-facts file to assist dynamic ruby facts
- updated hiera with additional directories (country/{role,region})
2024-01-05 21:44:41 +11:00

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