Hello puppeteers, if anyone is interested I have figured how to fill in
capistrano roles via the stored config db. I have the following script
served out to my puppetmasters via puppet (gethosts.rb):
#!/usr/bin/env ruby
require "puppet"
ActiveRecord::Base.establish_connection(
:adapter => 'mysql',
:database => 'puppet',
:host => 'localhost',
:password => 'puppet',
:username => 'puppet'
)
class Hosts < Puppet::Rails::Host; end
puts Hosts.find(:all,
:include => [ :fact_values, :fact_names ],
:conditions => [ "fact_names.name = ?
and fact_values.value = ?",
"operatingsystem",
"ubuntu"
]
).map { |host| host.name }
This lists, line by line, my ubuntu boxes. In a Capfile I have:
role :puppet_masters,
"puppet.whatever.com"
role :ubuntu do end
task :enum, :roles => [:puppet_masters] do
desc "Enumerate hosts from puppet DB"
hosts = Hash.new
logger.info "Hosts:"
run '/usr/local/bin/gethosts.rb', :pty => true do |ch, stream, out|
next if out.chomp == ''
logger.info out.sub(/\//,' ')
out.split("\r\n").each do |host|
role(:ubuntu, host)
end
end
end
enum
Later on I can do something like
task :aptup_all, :roles => [ :ubuntu ]
run "sudo apt-get update -y && sudo apt-get upgrade -y"
end
Of course this is pretty rudimentary, but I plan on extending my Capfile
to do a lot more tasks.
--
Joe McDonagh
Operations Engineer
www.colonfail.com
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en
-~----------~----~----~----~------~----~------~--~---