diff options
| author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-06-08 16:32:40 +0000 |
|---|---|---|
| committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-06-08 16:32:40 +0000 |
| commit | 4266f64ed5eea79e939c39b18861685a5b5a8ec7 (patch) | |
| tree | a4796e5395b69ef52742373be4d7d1148738831b /documentation | |
| parent | d6d05d4e3d2aafa95a0af8705b6b2f03367ac451 (diff) | |
| download | puppet-4266f64ed5eea79e939c39b18861685a5b5a8ec7.tar.gz puppet-4266f64ed5eea79e939c39b18861685a5b5a8ec7.tar.xz puppet-4266f64ed5eea79e939c39b18861685a5b5a8ec7.zip | |
adding faq to docs
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@1243 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'documentation')
| -rw-r--r-- | documentation/faq.rst | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/documentation/faq.rst b/documentation/faq.rst new file mode 100644 index 000000000..18a8c2b29 --- /dev/null +++ b/documentation/faq.rst @@ -0,0 +1,227 @@ +What is Puppet? +---------------- +Puppet is an open-source next-generation server automation tool. It is +composed of a *declarative* language for expressing system configuration, a +*client* and *server* for distributing it, and a *library* for realizing the +configuration. + +The primary design goal of Puppet is that it have an expressive enough +language backed by a powerful enough library that you can write your own +server automation applications in just a few lines of code. With Puppet, you +can express the configuration of your entire network in one program capable of +realizing the configuration. The fact that Puppet has open source combined +with how easily it can be extended means that you can add whatever +functionality you think is missing and then contribute it back to the main +project if you desire. + +You can learn more about Puppet by reading its Documentation_. + +What license is Puppet released under? +-------------------------------------- +Puppet is open source and is released under the `GNU Public License`_. + +Why does Puppet exist? +---------------------- +Luke Kanies, who founded Reductive Labs, has been doing server automation for +years, and Puppet is the result of his frustration with existing tools. After +significant effort spent trying to enhance cfengine, plus a stint at a +commercial server automation vendor, Luke concluded that the only way to get a +great automation tool was to develop one. + +Puppet is actually the result of years of design and prototyping (called Blink +during its prototype phases), but only in 2005 was a commercial company +(Reductive Labs) built to be fully dedicated to its creation. If Puppet is +not the most powerful and most flexible server automation platform available, +then its goals are not being met. + +Why does Puppet have its own language? +-------------------------------------- +This actually is a frequently asked question, and people most often ask why I +did not choose to use something like XML or YAML as the configuration +format; otherwise people ask why I didn't just choose to just use Ruby as the +input language. + +The input format for Puppet is not XML or YAML because these are data formats +developed to be easy for computers to handle. They do not do conditionals +(although, yes, they support data structures that could be considered +conditionals), but mostly, they're just horrible human interfaces. While some +people are comfortable reading and writing them, there's a reason why we use +web browsers instead of just reading the HTML directly. Also, using XML or +YAML would limit the ability to make sure the interface is declarative -- one +process might treat an XML configuration differently from another. + +As to just using Ruby as the input format, that unnecessarily ties Puppet to +Ruby, which is undesirable, and Ruby provides a bit too much functionality. +For more detail, see the thread_ on the puppet-dev list. + +.. _thread: http://mail.madstop.com/pipermail/puppet-dev/2006-April/000393.html + +How does Puppet compare to cfengine? +------------------------------------ +Puppet could be said to be the next-generation cfengine. The overall design +is heavily influenced by cfengine, but the language is more powerful than +cfengine's and the library is more flexible. In addition, Puppet's client and +server use standard protocols like XMLRPC and are easy to enhance with new +functionality, so they are well-positioned to become the platform for the +network applications of the future, while cfengine's client and server rely +entirely on cfengine-specific protocols and are quite difficult to enhance. + +See `How Puppet Compares to Cfengine`_ for more information. + +How does Puppet compare to available commercial products? +--------------------------------------------------------- +The primary commercial vendors are BladeLogic and OpsWare. While they both +have useful product lines, Puppet surpasses them by reframing the entire +server automation problem -- while the commercial vendors are writing GUI +applications for you, Reductive Labs is providing a development platform with +all the features of a great language, like library development, code sharing, +and the ability to version control your configurations. + +Trying to express a complex network configuration entirely through a GUI is an +exercise in frustration that no one should suffer, but expressing the +abstraction necessary to share those GUI configurations goes beyond +frustrating. + +Of course, another great difference between Puppet and the commercial products +is that Puppet is open sourced under the `GNU Public License`_. You can +download_ the product, try it out, peruse the source, and make whatever +modifications you want. You have to have more than 100 servers just to get a +demo from the commercial vendors, but Puppet is available for testing by any +company that needs to reduce its server administration costs. + +Who would find Puppet useful? +----------------------------- +Any organization that would like to reduce the cost of maintaining its +computers could benefit from using Puppet. However, because the return on +investment is linked to multiple factors, like current administrative +overhead, diversity among existing computers, and cost of downtime, it can be +difficult for organizations to determine whether they should invest in any +configuration management tools, much less Puppet. Reductive Labs can always +be contacted directly at info at reductivelabs.com to help answer this question. + +Generally, however, an organization should be using server automation if any +of the following are true: + +* It has high server administration costs +* It pays a high price for downtime, either because of contracts or + opportunity cost +* It has many servers that are essentially either identical or nearly + identical +* Flexibility and agility in server configuration are essential + +Can Puppet manage workstations? +------------------------------- +Yes, Puppet can manage any type of machine. We have found that most +organizations are more concerned with server management than workstation +management, and frankly, the term 'server' is slightly more aesthetically +appealing than 'computer', but Puppet would be ideal for organizations with a +large number of workstations. + +Does Puppet run on Windows? +--------------------------- +The short answer is 'not yet'. It will eventually, but Reductive Labs does +not yet have the development bandwidth to make this work. + +What size organizations should use Puppet? +------------------------------------------ +There is no minimum or maximum organization size that can benefit from Puppet, +but there are sizes that are more likely to benefit. Organizations with fewer +than 10-20 servers are unlikely to consider maintaining those servers to be a +real problem, and thus they can avoid investment in tools even though those +tools could likely provide savings. + +There is no real upper limit to who could benefit from using Puppet. +Obviously as the server count increases the investment must increase somewhat, +but with Puppet that increase is not linear. + +My servers are all unique; can Puppet still help? +------------------------------------------------- +All servers are at least somewhat unique -- with different host names and +different IP addresses -- but very few servers are entirely unique, since +nearly every one runs a relatively standard operating system. Servers are +also often very similar to other servers within a single organization -- all +Solaris servers might have similar security settings, or all web servers might +have roughly equivalent configurations -- even if they're very different from +servers in other organizations. Finally, servers are often needlessly unique, +in that they have been built and managed manually with no attempt at retaining +appropriate consistency. + +Puppet can help both on the side of consistency and uniqueness. Puppet +can be used to express the consistency that should exist, even if +that consistency spans arbritrary sets of servers based on any type of data +like operating system, data center, or physical location. Puppet can also be +used to handle uniqueness, either by allowing special provision of what makes +a given host unique or through specifying exceptions to otherwise standard +classes. + +Who is Reductive Labs? +---------------------- +Reductive Labs is a small, private company focused on reframing the server +automation problem. Our primary focus is Puppet, but Reductive Labs also +provides automation consulting, training, and custom development. For more +information email info at reductivelabs.com. + +The Projects_ page lists our active projects. + +How Do I Install Puppet? +------------------------ + +The `Installation Guide`_ documents the fastest way to start using Puppet. + +What is a Manifest? +------------------- +Because the word *script* implies a procedural one-step-after-another program, +the word does not apply well to Puppet programs. Thus, we use the word +*manifest* to describe declarative Puppet programs. Speaking of applying, +Puppet *applies* a manifest to a server or a network, rather than *executing* +it. + +How Do I Write Manifests? +------------------------- +The best way is to download Puppet and just start writing. There are multiple +sets of examples, including the examples_ used in `unit testing`_ and the +`example manifests`_, and the reference_ will obviously be useful. + +How Do I Run Manifests? +----------------------- +Once you have Puppet installed according the the `Installation Guide`_, +just run the ``puppet`` executable against your example:: + + puppet -v example.pp + +How do I contribute? +-------------------- +First join the `Mailing List`_ -- there is currently only a development list, +but as the community grows a user list will be created. You can also join the +IRC channel ``#puppet`` on irc.freenode.net, where Puppet's developers will be +hanging out most days (and nights). + +The most valuable contribution you can make, though, is to use Puppet and +submit your feedback, either directly on IRC or through the mailing list, or +via the `bug database`_. We're always looking for great ideas to incorporate +into Puppet. + +When is the Next Release? +------------------------- +There are regular feature and release updates on the `Mailing List`_, +and you can always find the latest release in the download_ directory. + +I keep getting "certificates were not trusted". What's wrong? +-------------------------------------------------------------- +You can figure the problem out by manually verifying the certificate with +openssl:: + + sudo openssl verify -CAfile /etc/puppet/ssl/certs/ca.pem /etc/puppet/ssl/certs/myhostname.domain.com.pem + +.. _example manifests: /svn/manifests/ +.. _Mailing List: http://mail.madstop.com/mailman/listinfo/puppet-dev +.. _Projects: /projects/ +.. _Documentation: /projects/puppet/documentation/ +.. _Installation Guide: /projects/puppet/documentation/installation +.. _How Puppet Compares to Cfengine: /projects/puppet/documentation/notcfengine +.. _GNU Public License: http://www.gnu.org/copyleft/gpl.html +.. _examples: /cgi-bin/puppet.cgi/browser/trunk/examples/code/ +.. _unit testing: http://www.pragmaticprogrammer.com/starter_kit/ut/ +.. _bug database: /cgi-bin/puppet.cgi/report +.. _reference: /projects/puppet/documentation/typedocs +.. _download: /downloads |
