Synopses & Reviews
CFEngine is the most mature and widely used tool for comprehensive configuration management. This book is devoted to CFEngine 3, released in 2009. The main audience for this book is experienced system administrators of null-to-medium expertise with CFEngine, although more advanced CFEngine users may also find useful snippets and techniques. Its goal is to guide you from installation to advanced examples and concepts by using examples and techniques that can be put to work straight away.
CFEngine was first released in 1993, and it has evolved over the years to address real needs in real systems, and to match the technological evolutions that have taken place, such as virtualization and cloud computing. CFEngine is fine-tuned to the features and design that make it possible to automate very large numbers of systems in a scalable and manageable way. CFEngine has been designed to be very resource-efficient, and it can run on everything from smartphones to supercomputers.
With the new version came a complete overhaul of its syntax and mode of operation, and with many new features such as Knowledge Management and support for virtual environments. CFEngine 3 is different from many other automation mechanisms in that you do not need to tell it what to do. Instead, you specify the state in which you wish the system to be, and CFEngine will automatically and iteratively decide the actions to take to reach the desired state, or as close to it as possible. Underlying this ability is a powerful theoretical model known as Promise Theory, which was initially developed for CFEngine 3, but which has also found other applications in Computer Science and in other fields such as Economics and Organization.
The main audience for this book will be experienced system administrators of null-to-medium expertise with cfengine, although more advanced cfengine users may also find useful snippets and techniques. The goal of the book is to serve as a complement to the existing reference guides, not describing every single aspect of cfengine configuration but rather tracing a path through it with examples and techniques that can be put to work straight away.
CFEngine is used by many companies that manage large datacenters, including Google, IBM, Facebook and HP. A large number of system administrators, by choice or by mandate, are getting introduced to cfengine in recent times, and they are looking for a good practical guide to the topic. Let us provide it to them.
Get up to speed on CFEngine 3, the open source configuration management software that enables you to automate everything from one-server shops to enterprise computer networks. This hands-on introduction shows you how to use CFEngine 3 to implement and manage and your IT infrastructure in a sustainable, scalable, and efficient manner.
Through numerous examples, youll learn how to use CFEngine to perform tasks such as user management, software installation, and security. Youll also learn how to focus on higher-level issues of design, implementation and maintenance, knowing that CFEngine is handling the lower-level details for you automatically.
- Discover how far you can go with system automation, using CFEngine
- Become familiar with the softwares principles, components, and policy structure
- Configure CFEngine step-by-step to perform routine tasks on your system
- Specify custom machine configuration without making changes by hand
- Get tricks and patterns that you can use in your own CFEngine policies
- Maintain separate CFEngine environments for development, testing, production, or other uses
About the Author
Diego Zamboni is a computer scientist, consultant, programmer and sysadmin who works as Senior Security Advisor and Product Manager at CFEngine AS. He has more than 20 years of experience in system administration and security, and has worked in both the applied and theoretical sides of the computer science field. He holds a Ph.D. from Purdue University, has worked as a sysadmin at the supercomputer center at UNAM (the National University in Mexico), as a researcher at the IBM Zurich Research Lab, and as a consultant at HP Enterprise Services. These days, he splits his time between coming up with new security-related projects at CFEngine, managing the Design Center project, nurturing the CFEngine community, coding useful CFEngine policies, and spending time with his family. He lives in Queretaro, Mexico with his wife and two daughters.
Table of Contents
Foreword; Preface; Who Is This Book For?; Overview of the Book; Online Resources; Conventions Used in This Book; Using Code Examples; Safari® Books Online; How to Contact Us; Acknowledgments; Chapter 1: Introduction; 1.1 How to Achieve Automation; 1.2 Why CFEngine?; 1.3 A Brief History of CFEngine; 1.4 Versions of CFEngine; Chapter 2: Getting Started with CFEngine; 2.1 Installing CFEngine; 2.2 Finishing the Installation and Bootstrapping; 2.3 Auxiliary Files; 2.4 Your First CFEngine Policy; Chapter 3: CFEngine Basics; 3.1 Basic Principles; 3.2 CFEngine Components; 3.3 A First Example; 3.4 CFEngine Policy Structure; 3.5 Clients and Servers; 3.6 CFEngine Information Resources; Chapter 4: Using CFEngine; 4.1 Initial System Configuration; 4.2 User Management; 4.3 Software Installation; 4.4 Using CFEngine for Security; Chapter 5: CFEngine Tips, Tricks, and Patterns; 5.1 Hierarchical Copying; 5.2 Passing Name-Value Pairs to Bundles; 5.3 Setting Default Values for Bundle Parameters; 5.4 Using Classes as Configuration Mechanisms; 5.5 Generic Tasks Using Lists and Array Indices; 5.6 Defining Classes for Groups of Hosts; 5.7 Controlling Promise Execution Order; Chapter 6: Advanced Topics; 6.1 Setting Up Multiple CFEngine Environments; 6.2 CFEngine Testing; 6.3 Where to from Here?; Editing CFEngine 3 Configurations in Emacs; Setting Up; Using the cfengine Mode; Customizing Indentation in cfengine-mode;