On Jan 14, 2011, at 1:31 AM, Brice Figureau wrote:

> Hi,
> 
> It looks like I forgot to answer this e-mail :(
> 
> On Fri, 2011-01-07 at 13:04 -0800, Luke Kanies wrote:
>> On Jan 7, 2011, at 11:44 AM, Brice Figureau wrote:
>> 
>>> On 07/01/11 19:13, Luke Kanies wrote:
>> [...]
>>>> Hi Brice,
>>>> 
>>>> This is great work, and it's work I've been excited to see for a long
>>>> time.
>>>> 
>>>> One thing that's not clear to me from this -- would you ever expect
>>>> to have a device's resources mixed in with a normal host's resources?
>>> 
>>> Yes that's correct, because that was the simplest way to bring the feature.
>>> 
>>>> That is, would you expect to see a given host's catalog containing
>>>> anything other than device resources for a single device?  It looks
>>>> like I could use this to have vlan resources configured on multiple
>>>> devices, plus normal Unix resources in a completely unrelated host.
>>> 
>>> You're right. They're just normal resources except they're remote.
>>> In my view you'd just design one of your node close to the remote device
>>> to manage it.
>>> 
>>>> We've been talking about this a good bit internally, and one of the
>>>> things I want to do with this kind of work (managing systems that
>>>> can't run Puppet agents) is retain the idea that a given catalog is
>>>> only ever for one device.  This could be done right now using puppetd
>>>> and just setting certname specially (and maybe configdir/vardir
>>>> generally), so it's more of a conceptual discipline at this point.
>>> 
>>> Yes, that's right, this feature can be emulated with a given certname.
>>> 
>>>> In this model, you'd either have a single resource that defines how
>>>> to connect with the device:
>>>> 
>>>> device { $hostname: user => ..., pass => ..., }
>>>> 
>>>> Or you'd create a special application that does this:
>>>> 
>>>> $ puppet device --proto ssh --user <user> --pass <pass>
>>>> cisco2960.domain.com
>>>> 
>>>> Or something like that.
>>> 
>>> I see where you're going :)
>>> 
>>>> Do you think this kind of model makes sense?  Is this basically how
>>>> you were planning on using this work?
>>> 
>>> This certainly make sense, but frankly I didn't think about it. I was
>>> more concerned about the remote management than on the user interface of
>>> the given feature.
>>> 
>>> The problem with having a specific device daemon/app is that you'll then
>>> have to run one daemon per managed device. This is certainly good for
>>> reporting or such features, but would be awful in terms of resource
>>> consumption.
>>> We could do this in one puppetd run by asking for more than one catalog
>>> (one for every "device" and one for the given node).
>> 
>> It doesn't have to be one process per device - you could have 'puppet
>> device' (or whatever -- maybe 'proxy'?) take a list of names, or take
>> a search string to use against Dashboard, or just about anything.
>> Heck, it could be a long-running process that had a schedule for each
>> host, and either forked off or used a thread for each host.
> 
> Don't you think it would be a clone of the puppet agent (in terms of
> code)?

It would be similar except:

* The process should be able to reasonably handle N devices, where N >> 1.

* The process should never, ever affect local system state (and thus could run 
on a central server)

* You could do more interesting things with the providers and such if you knew 
that all resources were only for that one kind of device and device instance

>>>> I've been planning on experimenting with making a similar effort
>> for
>>>> databases - that is, treating an individual database as a "device"
>>>> that can't run puppetd.  People give me funny looks whenever I talk
>>>> about it, but IMO it's just as reasonable to think of a database as
>>>> being equivalent to a VM running on a host OS.  You don't try to
>>>> manage the users inside of a VM from the host OS; why would you try
>>>> to manage the users inside of a database from outside the database?
>>> 
>>> This makes perfect sense.
>>> 
>>>> In either of these cases, having the expectation that all resources
>>>> use the same connection to the device you're managing might gain you
>>>> some efficiency wins, such as being able to use a cached connection
>>>> for all DB operations, or being able to prefetch the entire Cisco iOS
>>>> configuration rather than prefetching per resource types.
>>> 
>>> Which is almost already what I'm doing (or at least it was as I was
>>> thinking) thanks to provider prefetching.
>>> 
>>>> What do you think?
>>> 
>>> That's an interesting view. I understand the appeal.
>>> I'm a bit skeptical about the puppet device app, and it's still unclear
>>> how you'd configure puppetd to fetch devices catalog along with the host
>>> catalog (I'm really not sure about your device resource).
>>> 
>>> Can you elaborate about how you'd see the puppetd multiple run stuff,
>>> both in terms of configuration/UI and code?
>>> That's certainly something I can work on as a preamble patch to the
>>> cisco one.
>> 
>> My whole point is that you wouldn't have a 'host' catalog per se - in
>> the simplest case (that is, the one involving no further
>> applications), you just do something like:
>> 
>> for device in switch1 router1; do
>>  puppet agent --confdir /var/devices/$device --vardir /var/devices/$device 
>> --certname $device
>> done
>> 
>> It wouldn't matter where you ran this, as long as it had access to
>> both the server and the device. The only caveat is that the 'facts'
>> would be for the proxy host, rather than the end device.  This is one
>> of the things you'd want 'puppet device' to do - be able to extract
>> facts from a device.
> 
> Oh, yes facts. I understand now the needs for the device puppet app.
> 
>> Does that answer your questions?  We're probably talking past each
>> other a bit here, since I can't quite see your confusion.
> 
> Indeed :)
> 
> I'll try to see how I can produce this device application and its config
> file (ie the place where you configure what device you aim to
> configure).

That would be awesome.  Thanks.

-- 
Smoking is one of the leading causes of statistics.  -- Fletcher Knebel
---------------------------------------------------------------------
Luke Kanies  -|-   http://puppetlabs.com   -|-   +1(615)594-8199




-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" 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-dev?hl=en.

Reply via email to