Objects matching the expression 'comparison'
- #962 Addition of value testing and logical/comparison operators (comparison, conditional, else, if, logical, operator)
- CfengineVsPuppet .. contents:: Cfengine_ is currently the most widely deployed configuration management tool. In many ways, Puppet_ can be thought of as a next-generation version of cfengine, in that many of puppet's design goals are specifically derived from experience with cfengine and are meant to overcome many of cfengine's weaknesses. Puppet has significant differences from cfengine and is not just a direct descendent, but this document focuses on their direct correlations. This document summarizes the primary advances that Puppet makes over cfengine's current state. An Open Development Community ----------------------------- While Puppet's technical innovations are clearly important to its success, one of the biggest differences is non-technical: The development community around Puppet is very open and is predicated on the belief that everyone should be able to contribute ideas and code to the project. Commit access is given pretty easily, and we do everything we can to encourage contributions of various kinds. We know that we don't have all of truth, and we're more interested in a great tool than in being right. Cross-Platform Support ---------------------- Puppet was developed with a strong focus on cross-platform support, because most organizations have to deal with this problem but also because otherwise solutions cannot easily be shared among organizations. Puppet's configuration language and functional back-end are the centers of its multiple platform support. A Resource Abstraction Layer Cfengine is a great way to scale common administrative practices -- you can move from using SSH and a for loop to using Cfengine pretty smoothly. However, there is just as much complexity present in either form. You still have to handle file contents, and you still have to manage operating system differences yourself -- you have to know whether it's useradd or adduser, whether it's init or Sun's SMF, and what the format of the filesystem tab is. One of Puppet's primary innovations is a resource abstraction layer, so that you do not have to know those details. You can speak in terms of resources like users, services, or filesystems, and Puppet will translate them to the appropriate commands on each system. Puppet administrators are free to focus on the complexity of their configurations, rather than being forced to also handle that complexity plus the complexity of the differences between the operating systems. Puppet's development was heavily influenced by the many external modules that Luke Kanies wrote for cfengine, each module managing a separate resource like users, packages, or cron jobs, and one of Puppet's primary goals was to be able to make it easy to expand the number of resource types it can manage. Configuration Language Cfengine makes it surprisingly difficult to provide support for multiple architectures because of how low-level it is. All path variance (e.g., /usr/sbin/sshd vs. /usr/local/sbin/sshd) must be handled manually and often in multiple places (e.g., both starting a service and restarting it). Puppet provides a notion of a title (e.g., "sshd") and a name (which might be "sshd" or "openssh") for any resource, allowing administrators to pick a single title for all resources yet use the name as necessary for functionality. Dependency resolution can use either, making resource relationships simple. For instance, here is how one might support ssh on multiple platforms in Puppet:: class ssh { file { sshdconfig: path (cfengine, comparison, development, features)