Details below, but the essential problem is this: I need to take a list of 
hostnames and assign an integer for each one and ensure that the integer “is 
non-negative and is no more than three decimal digits in length”. I’d prefer 
that the each hostname lead to the same integer every time. I’ve never written 
anything in Ruby before yesterday, so anyone with more experience have any 
ideas?

Boring details: I’m trying to set up replication between LDAP servers. Each one 
has to have a unique integer assigned. Details for all of our nodes are stored 
in LDAP, so when the template is applied to a node, I can have it get a list of 
servers that it should be syncing with by searching for something like 
“(&(classification=ldap)(environment=#{environment})(!(status=inactive*)))”.

Things I’ve considered so far:

1. Just keep a counter as you loop through the list of servers and use that as 
the ID. The problem is, if I remove a server from the list (which I am planning 
to do soon), the numbers will be reassigned and depending on when each server 
checks in with the Puppetmaster, there’s a good chance that two servers could 
think they have the same ID.

2. Use regex replacements on the hostname. Our hostnames are all in the format 
x-xxxx-ldap-01. I could just take the integer part of the name and then add 
something to it based on the value of environment, but then I’d have to assume 
the hostname format will never change. Political nonsense is common around 
here, so I don’t want to rely on that.

What I really need is something like an MD5 sum of each hostname, but the 
resulting numbers are obviously way too big.

Thanks.

-- 
Rob McBroom
<http://www.skurfer.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.

Reply via email to