On 10/8/07, Brandorr <brandorr@xxxxxxxxxxxxxxx> wrote:
>
I discovered Capistrano while I was trying to figure out what I
>
wanted. See attached notes.
>
http://www.genunix.org/wiki/index.php/GNOSIS/Kraken
Puppet and Capistrano fill two very different niche's. Capistrano is
essentially a mashup of Rake and SSH. It allows you to develop
recipes for dealing with executing commands on servers in parallel,
the canonical example being the deployment of a Rails application.
Capistrano *can* be used to automate standard systems administration
tasks (and some people do use it that way) but it's really no
different than what many systems administrators have been doing for
years with shell scripts and for loops.*
Puppet is a language for expressing your infrastructure in code.
Using Puppet's language, you define all the resources needed in your
infrastructure, and then apply those resources to individual nodes (or
servers.) Puppet makes your infrastructure more reliable, repeatable,
and documented.
We use Puppet and Capistrano both extensively in our consulting
practice. Puppet builds and manages the infrastructure (including the
things done when you can cap deploy:setup,) while Capistrano handles
the deployment of new code. (which it is pretty good at.)
When you add a tool like the soon-to-get-a-real-release iClassify, you
can integrate Puppet and Capistrano directly. It lets you organize
your systems with tags (that map to Puppet Classes), and Capistrano
queries it to set up the server roles.
For example, you might have a "database" puppet class that configures
a mysql server. It further might be a "master" or "slave", which maps
to the Capistrano :db role. We query iClassify with Capistrano,
asking for the database servers, and making the one that is your
master the :primary one.
Capistrano and Puppet go together like cheese and crackers.
Adam
--
HJK Solutions - We Launch Startups -
http://www.hjksolutions.com
Adam Jacob, Senior Partner
T: (206) 508-4759 E: adam@xxxxxxxxxxxxxxxx
Thread at a glance:
Previous Message by Date:
click to view message preview
Is Puppet similar to Capistrano?
I discovered Capistrano while I was trying to figure out what I
wanted. See attached notes.
http://www.genunix.org/wiki/index.php/GNOSIS/Kraken
Puppet seems promising.
Thanks,
Brian
--
- Brian Gupta
http://opensolaris.org/os/project/nycosug/
Next Message by Date:
click to view message preview
Re: Is Puppet similar to Capistrano?
On 10/8/07, Brandorr <brandorr@xxxxxxxxxxxxxxx> wrote:
> I discovered Capistrano while I was trying to figure out what I
> wanted. See attached notes.
> http://www.genunix.org/wiki/index.php/GNOSIS/Kraken
>
> Puppet seems promising.
I just read your wiki entry. You should consider contributing to
Factor, for your system inventory needs. Puppet is a significant part
of an open source data center management tool, and is a much better
integration choice than cfengine (imnsho.)
Having written two or three systems like the one you are describing in
the past (including iClassify today) I suggest you do a few things:
1. You need to keep the schema flexible, since you never know what
sort of thing people need to track. If you find yourself writing a
new class for each entity you need to track in your datacenter
(server, router, switch, rack, pdu, et al) then you're off track.
2. You need to allow for the expression of relationships between
entities. For example, a server is in a rack. This is best done
fairly loosely. iClassify doesn't do this at all right now, although
I have some ideas about how it might.
3. Use a full text search engine like Xapian, Solr, Ferret or Lucene.
One of these models used Xapian entirely, and had no relational
database engine at all. Thus far, it remains my favorite of my
implementations of this problem for flexibility. In the end, you can't
beat saying "tags:database AND mysql-master:true", or
"ipaddress:[192.168.1.0-192.168.10.0]".
4. As much as possible, entities need to be responsible for reporting
in to the management system. They should push data to it, it should
not be polling the entities for updates. (Where possible. Sometimes,
you have to poll.)
I could go on. :)
There is lots of work going on in this space right now in the puppet
community at large, and if would be excellent if it would include the
work you are already planning for.
Regards,
Adam
--
HJK Solutions - We Launch Startups - http://www.hjksolutions.com
Adam Jacob, Senior Partner
T: (206) 508-4759 E: adam@xxxxxxxxxxxxxxxx
Previous Message by Thread:
click to view message preview
Is Puppet similar to Capistrano?
I discovered Capistrano while I was trying to figure out what I
wanted. See attached notes.
http://www.genunix.org/wiki/index.php/GNOSIS/Kraken
Puppet seems promising.
Thanks,
Brian
--
- Brian Gupta
http://opensolaris.org/os/project/nycosug/
Next Message by Thread:
click to view message preview
Re: Is Puppet similar to Capistrano?
On 10/8/07, Brandorr <brandorr@xxxxxxxxxxxxxxx> wrote:
> I discovered Capistrano while I was trying to figure out what I
> wanted. See attached notes.
> http://www.genunix.org/wiki/index.php/GNOSIS/Kraken
>
> Puppet seems promising.
I just read your wiki entry. You should consider contributing to
Factor, for your system inventory needs. Puppet is a significant part
of an open source data center management tool, and is a much better
integration choice than cfengine (imnsho.)
Having written two or three systems like the one you are describing in
the past (including iClassify today) I suggest you do a few things:
1. You need to keep the schema flexible, since you never know what
sort of thing people need to track. If you find yourself writing a
new class for each entity you need to track in your datacenter
(server, router, switch, rack, pdu, et al) then you're off track.
2. You need to allow for the expression of relationships between
entities. For example, a server is in a rack. This is best done
fairly loosely. iClassify doesn't do this at all right now, although
I have some ideas about how it might.
3. Use a full text search engine like Xapian, Solr, Ferret or Lucene.
One of these models used Xapian entirely, and had no relational
database engine at all. Thus far, it remains my favorite of my
implementations of this problem for flexibility. In the end, you can't
beat saying "tags:database AND mysql-master:true", or
"ipaddress:[192.168.1.0-192.168.10.0]".
4. As much as possible, entities need to be responsible for reporting
in to the management system. They should push data to it, it should
not be polling the entities for updates. (Where possible. Sometimes,
you have to poll.)
I could go on. :)
There is lots of work going on in this space right now in the puppet
community at large, and if would be excellent if it would include the
work you are already planning for.
Regards,
Adam
--
HJK Solutions - We Launch Startups - http://www.hjksolutions.com
Adam Jacob, Senior Partner
T: (206) 508-4759 E: adam@xxxxxxxxxxxxxxxx