Ramon van Alteren
2010-Nov-22 11:06 UTC
[Puppet Users] Hudson, manitest and the hostname fact
Hi All, We''re trying to get a hudson build working for our puppet modules by using manitest. So far we''ve had good progress but right now we''re stumped. We have a set of manifest/template combinations where the manifest code uses the hostname fact to pick a specific template tied to a particular hostname. Not the nicest code...... However when running manitest with a yaml file from one of the target servers the manifest fails because the hostname fact is still set to the hostname of our hudson machine. It appears that the hostname fact is not replaced by the manitest code, but we can''t figure out why not. The fqdn fact is set correctly, we verified that the hostname fact is present in the yaml file, it is. This is the manitest snippet that takes care of overriding the facts based on the yaml: node = YAML.load_file options[:node] <snip> # export all parameters as facter env - overriding our real system values # this also works for external nodes parameters puts "Setting up facts:" if options[:debug] node.parameters.each do |k,v| begin if v.is_a?Array if v.empty? puts "! converting empty array to empty variable" if options[:debug] ENV["facter_#{k}"]=''EMPTY'' else puts "! converting array to joined string" if options[:debug] ENV["facter_#{k}"]=v.join(", ") end else ENV["facter_#{k}"]=v end puts "%s=>''%s''" % [k,ENV["facter_#{k}"]] if options[:debug] rescue warn "! failed to set fact #{k} => ''#{v}''" if options[:debug] end end We put some additional code in there to deal with array based facts, which cause the manitest run to fail. Is there anyone who can shed some light on this or knows the issue ? We''re working with puppet-2.6 and the latest trunk version of manitest. Any clues would be appreciated. Ramon -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
On Nov 22, 3:06 am, Ramon van Alteren <ra...@hyves.nl> wrote:> Hi All, > > We''re trying to get a hudson build working for our puppet modules by using > manitest. > > So far we''ve had good progress but right now we''re stumped. > We have a set of manifest/template combinations where the > manifest code uses the hostname fact to pick a specific template tied to a > particular hostname. > > Not the nicest code...... > > However when running manitest with a yaml file from one of the target > servers the manifest fails because the hostname fact is still set to the > hostname of our hudson machine. > It appears that the hostname fact is not replaced by the manitest code, but > we can''t figure out why not. > The fqdn fact is set correctly, we verified that the hostname fact is > present in the yaml file, it is. > > This is the manitest snippet that takes care of overriding the facts based > on the yaml: > > node = YAML.load_file options[:node] > <snip> > # export all parameters as facter env - overriding our real system values > # this also works for external nodes parameters > puts "Setting up facts:" if options[:debug] > node.parameters.each do |k,v| > begin > if v.is_a?Array > if v.empty? > puts "! converting empty array to empty variable" if > options[:debug] > ENV["facter_#{k}"]=''EMPTY'' > else > puts "! converting array to joined string" if options[:debug] > ENV["facter_#{k}"]=v.join(", ") > end > else > ENV["facter_#{k}"]=v > end > puts "%s=>''%s''" % [k,ENV["facter_#{k}"]] if options[:debug] > rescue > warn "! failed to set fact #{k} => ''#{v}''" if options[:debug] > end > end > > We put some additional code in there to deal with array based facts, which > cause the manitest run to fail. > > Is there anyone who can shed some light on this or knows the issue ? > > We''re working with puppet-2.6 and the latest trunk version of manitest. > > Any clues would be appreciated. > > RamonRamon, did you ever make progress on this? On your test host is the local puppet.conf parameter node_name set to ''cert''? I may be out of date, but I recall the default values of the ''hostname'' ''fqdn'' & ''domain'' puppet variables would be sourced from the CN of the local cert. The puppet variable ''hostname'' is a bit different than the others. I think it''s assigned using ||= internally, so your facter fact may not override the existing internal value. -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.