#!/usr/bin/perl -w
use strict;
use YAML qw( Dump );
use DBI;
my $hostname = shift || die "No hostname passed";
$hostname =~ /^(\w+)\.(\w+)\.(\w{3})$/
or die "Invalid hostname: $hostname";
my ( $host, $domain, $net ) = ( $1, $2, $3 );
# MySQL Configuration
my $data_source = "dbi:mysql:database=puppet;host=localhost";
my $username = "puppet";
my $password = "password";
# Connect to the server
my $dbh = DBI->connect($data_source, $username, $password)
or die $DBI::errstr;
# Build the query
my $sth = $dbh->prepare( qq{SELECT class FROM nodes WHERE node = '$hostname'})
or die "Can't prepare statement: $DBI::errstr";
# Execute the query
my $rc = $sth->execute
or die "Can't execute statement: $DBI::errstr";
# Set parameters
my %parameters = (
puppet_server => "puppet.$domain.$net"
);
# Set classes
my @class;
while (my @row=$sth->fetchrow_array)
{ push(@class,@row) }
# Check for problems
die $sth->errstr if $sth->err;
# Disconnect from database
$dbh->disconnect;
# Print the YAML
print Dump( {
classes => \@class,
parameters => \%parameters,
} );