Update:
    It looks like the culprit is the external node classifier:  This
is the error from the server:

err: Could not find node 'client.dev.domain.com'; cannot compile
err: Failed to find client.dev.domain.com via exec: Execution of '/etc/
puppet/external_node.rb client.dev.domain.com' returned 1: /usr/lib/
ruby/1.8/net/http.rb:2022:in `read_status_line': wrong status line: "<!
DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN
\">" (Net::HTTPBadResponse)
        from /usr/lib/ruby/1.8/net/http.rb:2009:in `read_new'
        from /usr/lib/ruby/1.8/net/http.rb:1050:in `request'
        from /etc/puppet/external_node.rb:14
        from /usr/lib/ruby/1.8/net/http.rb:543:in `start'
        from /usr/lib/ruby/1.8/net/http.rb:440:in `start'
        from /etc/puppet/external_node.rb:13

err: Could not find node 'client.dev.domain.com'; cannot compile


This is the Node Classifier:
#!/bin/ruby
# a simple script which fetches external nodes from Foreman
# you can basically use anything that knows how to get http data, e.g.
wget/curl etc.

# Foreman url
foreman_url="http://server:443";

require 'net/http'

foreman_url += "/node/#{ARGV[0]}?format=yml"
url = URI.parse(foreman_url)
req = Net::HTTP::Get.new(foreman_url)
res = Net::HTTP.start(url.host, url.port) { |http|
  http.request(req)
}

case res
when Net::HTTPOK
  puts res.body
else
  $stderr.puts "Error retrieving node %s: %s" % [ARGV[0], res.class]



What node classifier do you guys use with Apache/Passenger config?

Thanks,


On Jul 27, 11:13 am, CraftyTech <[email protected]> wrote:
> So this is where I'm at now:
>
> Step 3)
> From Server:
> RAILS_ENV=production rake db:migrate; RAILS_ENV=production rake
> puppet:import:hosts_and_facts; rake puppet:import:puppet_classes --
> trace RAILS_ENV=production
>
> from client's command line:
> Step 2)
> curl  -khttps://server/node/client.dev.domain.com?format=yml
> ---
> parameters:
>   puppetmaster: puppet
>   domainname: dev.domain.com
> classes:
> - basic
> environment: production
>
> Step 3)
>
> puppetd -t
> notice: Ignoring --listen on onetime run
> err: Could not retrieve catalog from remote server: Error 400 on
> SERVER: Could not find node 'client.dev.domain.com'; cannot compile
> warning: Not using cache on failed catalog
> err: Could not retrieve catalog; skipping run
>
> The crazy thing is that with webrick, I just point the node classifier
> to server:port and it works just fine.  The issue is the passenger/
> apache config, which yields a result when queried via curl command..
> so I'm at a lost here... can anyone think of a way to trace the apache/
> passenger interaction to see where it dies out?  right now I have the
> foreman_url pointed to "https://server"; ( I also triedhttps://server:443
> andhttp://server:443).
>
> If you guys have a working Apache/Passenger with Foreman working, do
> you mind sharing your vhost.conf?
>
> Thanks,
>
> On Jul 26, 8:50 am, CraftyTech <[email protected]> wrote:
>
>
>
> > It was an issue with the FQDN value.  Since it was a VM that was
> > testing, I had the hostname value on /etc/sysconfig/network set to
> > hostname only, as opposed to FQDN.  Once I took care of that and value
> > took in, then I could query the node via classifier/fqdn.
>
> > On Jul 24, 2:14 am, Ohad Levy <[email protected]> wrote:
>
> > > Hi,
>
> > > Foreman returns 404 if a node is not found, if you want puppet do to
> > > something for undefined nodes, you would need to create a default node
> > > statement.
>
> > > what was your original problem? hostnames were not in fqdn?
>
> > > Ohad
>
> > > On Fri, Jul 23, 2010 at 11:53 PM, CraftyTech <[email protected]> wrote:
> > > > Now I'm getting some results (Some progress finally !!):
>
> > > > ---
> > > > parameters:
> > > >  puppetmaster: puppet
> > > >  domainname: dev.xxxxx.com
> > > > classes:
> > > > - basic
> > > > environment: puppetmasterd
>
> > > > But I still get: "server: Error 400 on SERVER: Could not find node
> > > > 'nodename'".  Does this mean that I have define a default node and
> > > > include it in the site.pp?  From the forums I see mixed reviews; some
> > > > saying what with external nodes you need a default node definition,
> > > > and others saying that you don't need any node definition and that
> > > > everything should rely on the external node classifier.. any thoughts
> > > > or suggestions?
>
> > > > Thanks,
>
> > > > On Jul 23, 7:57 am, CraftyTech <[email protected]> wrote:
> > > > > Small correction: "if I edit the host via Foreman web interface, I
> > > > > can't no longer
> > > > > see it from "curl  -khttps://foreman/node/nodename?format=yml";; I'd
> > > > > get message "404 Not Found" from the command line" --> I'd have to re-
> > > > > run puppetd -t, to be able to get a result from "curl
> > > >  -khttps://foreman/node/nodename?format=yml"; again.. after that --> I'd
> > > > > have two nodes of the same name listed in Foreman web interface..
>
> > > > > On Jul 23, 7:14 am, CraftyTech <[email protected]> wrote:
>
> > > > > > Thanks for the reply Ohad.  Actually, that's part of the issue as
> > > > > > well; If I edit the host via Foreman web interface, I can't no 
> > > > > > longer
> > > > > > see it from "curl  -khttps://foreman/node/nodename?format=yml";; I'd
> > > > > > get message "404 Not Found" from the command line.  On the flip 
> > > > > > side,
> > > > > > I'd have two nodes of the same name listed in Foreman web interface;
> > > > > > 1) A new one that get's created when I run puppetd -t, and 2) The 
> > > > > > one
> > > > > > that I edited via the web interface....  I know it sounds confusing,
> > > > > > but that's exactly what's happening... It seems that the foreman
> > > > > > environment, and puppet environment see two different nodes, even
> > > > > > thought there's only one host.yaml file..
>
> > > > > > On Jul 23, 1:46 am, Ohad Levy <[email protected]> wrote:
>
> > > > > > > Hi,
>
> > > > > > > The output you get from external nodes means that the host was not
> > > > allocated
> > > > > > > to any class or puppet environment, make sure you edit the host
> > > > details
> > > > > > > first in foreman.
>
> > > > > > > Ohad
>
> > > > > > > On Fri, Jul 23, 2010 at 4:22 AM, CraftyTech <[email protected]>
> > > > wrote:
> > > > > > > > Hello All,
>
> > > > > > > >     So I finally got around to start to cut over node 
> > > > > > > > definitions
> > > > > > > > from standard flat files to external nodes (foreman), and 
> > > > > > > > getting
> > > > > > > > error message: "Error 400 on SERVER: Could not find node
> > > > 'nodename';
> > > > > > > > cannot compile" - So basically it can't pick up the node from 
> > > > > > > > the
> > > > > > > > external node config.
>
> > > > > > > > When I test the fetching of the yaml file it seems to work as I 
> > > > > > > > get
> > > > a
> > > > > > > > result back: i.g:
> > > > > > > > curl  -khttps://foreman/node/nodename?format=yml
>
> > > > > > > > ---
> > > > > > > > parameters:
> > > > > > > >  puppetmaster: puppet
> > > > > > > > classes: []
>
> > > > > > > > environment: ""
>
> > > > ###########################################################################
> > > > ###################
> > > > > > > > This is my puppet.conf:
>
> > > > > > > > [main]
> > > > > > > >    vardir = /var/lib/puppet
> > > > > > > >    logdir = /var/log/puppet
> > > > > > > >    rundir = /var/run/puppet
> > > > > > > >    reports= log,foreman,rrdgraph,store
> > > > > > > >    clientyamldir = /var/lib/puppet/yaml/node
> > > > > > > >    pluginsync = true
> > > > > > > >    external_nodes = /etc/puppet/external_node.rb
> > > > > > > >    node_terminus = exec
>
> > > > > > > > [puppetmasterd]
> > > > > > > >    ssl_client_header = SSL_CLIENT_S_DN
> > > > > > > >    ssl_client_verify_header = SSL_CLIENT_VERIFY
> > > > > > > >    modulepath = $confdir/modules
> > > > > > > >    templatedir = /etc/puppet/manifests/templates
> > > > > > > >    #clientyamldir = /var/lib/puppet/yaml/node
> > > > > > > >    reportdir = /var/lib/puppet/reports
> > > > > > > >    storeconfigs = true
> > > > > > > >    dbadapter = mysql
> > > > > > > >    dbuser = app_puppet
> > > > > > > >    dbpassword = xxxxxxxxxxxxxx
> > > > > > > >    dbserver = localhost
> > > > > > > >    dbsocket = /sql/mysql/mysql.sock
> > > > > > > >    rrddir = /var/lib/puppet/rrd
> > > > > > > >    rrdinterval = $runinterval
> > > > > > > >    rrdgraph = true
>
> > > > > > > > [puppetd]
> > > > > > > >    classfile = $vardir/classes.txt
> > > > > > > >    report = true
> > > > > > > >    localconfig = $vardir/localconfig
>
> > > > > > > > Any ideas?
>
> > > > > > > > Thanks,
>
> > > > > > > > Henry
>
> > > > > > > > --
> > > > > > > > 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]<puppet-users%2bunsubscr...@google
> > > > > > > >  groups.com>
> > > > <puppet-users%2bunsubscr...@google groups.com>
> > > > > > > > .
> > > > > > > > For more options, visit this group at
> > > > > > > >http://groups.google.com/group/puppet-users?hl=en.
>
> > > > --
> > > > 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]<puppet-users%2bunsubscr...@google
> > > >  groups.com>
> > > > .
> > > > For more options, visit this group at
> > > >http://groups.google.com/group/puppet-users?hl=en.

-- 
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.

Reply via email to