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.