eid-ops/global/overlay/etc/puppet/facter/cosmos.rb

49 lines
1.2 KiB
Ruby

#
# Extract local Cosmos configuration
#
require 'facter'
Facter.add(:cosmos_repo) do
setcode do
Facter::Util::Resolution.exec("sh -c '. /etc/cosmos/cosmos.conf && echo $COSMOS_REPO'")
end
end
Facter.add(:cosmos_tag_pattern) do
setcode do
Facter::Util::Resolution.exec("sh -c '. /etc/cosmos/cosmos.conf && echo $COSMOS_UPDATE_VERIFY_GIT_TAG_PATTERN'")
end
end
Facter.add(:cosmos_repo_origin_url) do
setcode do
Facter::Util::Resolution.exec("sh -c '. /etc/cosmos/cosmos.conf && cd $COSMOS_REPO && git remote show -n origin | grep \"Fetch URL\" | awk \"{print \\$NF }\"'")
end
end
# Construct the structured facts under $facts['cosmos']
Facter.add('cosmos') do
require 'yaml'
# Load YAML file with all the roles and their hosts/addresses
res_h = YAML.load_file('/etc/puppet/static-cosmos-facts.yaml')
# Figure out which roles match the current host
fqdn = Facter.value(:fqdn)
res = []
res_h['cosmos'].each do | key, values |
if key.end_with? '_hosts'
if values.include? fqdn
role = key.chomp('_hosts')
res = res + [role]
end
end
end
warn("Cosmos roles for host #{fqdn}: #{res}")
res_h['cosmos']['host_roles'] = res
setcode do
res_h['cosmos']
end
end