Skip to content

Instantly share code, notes, and snippets.

@jlsherrill
Created November 13, 2014 17:22
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jlsherrill/a8b6f74e1c6c2580b52a to your computer and use it in GitHub Desktop.
Save jlsherrill/a8b6f74e1c6c2580b52a to your computer and use it in GitHub Desktop.
Fact exchange
#!/usr/bin/ruby
if File.exists?("/etc/facts.d")
entries = Dir.entries("/etc/facts.d/")
name_map = {}
entries.each do |entry|
if File.file?("/etc/facts.d/#{entry}")
ext = entry.split('.')[1]
name_map[ext] ||= []
name_map[ext] << entry
value = File.readlines("/etc/facts.d/#{entry}").join('')
Facter.add(entry){ setcode { value }}
end
end
name_map.keys.each do |key|
Facter.add("#{key}_keys"){ setcode {name_map[key].sort.join(',')} }
end
end
class p4h::lesson18() {
file { '/root/README':
content => "##lesson18
Happy hacking!\n",
}
file { '/etc/facts.d/':
ensure => 'directory',
recurse => true,
purge => true,
force => true
}
@@file { "/etc/facts.d/${$hostname}.cluster":
content => "${hostname}",
require => File['/etc/facts.d/'],
tag => 'cluster'
}
File <<| tag == 'cluster' |>> {}
}
@jlsherrill
Copy link
Author

result on node a

[root@lesson18a ~]# facter -p | grep cluster
cluster_keys => lesson18a.cluster,lesson18b.cluster,lesson18c.cluster
lesson18a.cluster => lesson18a
lesson18b.cluster => lesson18b
lesson18c.cluster => lesson18c

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment