49 lines
1.2 KiB
Ruby
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
|