Virtualization, cloud, containers, server automation, and software-defined networking are meant to simplify IT operations. But many organizations adopting these technologies have found that it only leads to a faster-growing sprawl of unmanageable systems. This is where infrastructure as code can help. With this practical guide, author Kief Morris of ThoughtWorks shows you how to effectively use principles, practices, and patterns pioneered through the DevOps movement to manage cloud age infrastructure.
Ideal for system administrators, infrastructure engineers, team leads, and architects, this book demonstrates various tools, techniques, and patterns you can use to implement infrastructure as code. In three parts, you’ll learn about the platforms and tooling involved in creating and configuring infrastructure elements, patterns for using these tools, and practices for making infrastructure as code work in your environment.
Examine the pitfalls that organizations fall into when adopting the new generation of infrastructure technologies
Understand the capabilities and service models of dynamic infrastructure platforms
Learn about tools that provide, provision, and configure core infrastructure resources
Explore services and tools for managing a dynamic infrastructure
Learn specific patterns and practices for provisioning servers, building server templates, and updating running servers
Chapter 1Challenges and Principles
Why Infrastructure as Code?
What Is Infrastructure as Code?
Challenges with Dynamic Infrastructure
Principles of Infrastructure as Code
Antifragility: Beyond “Robust”
Chapter 2Dynamic Infrastructure Platforms
What Is a Dynamic Infrastructure Platform?
Requirements for a Dynamic Infrastructure Platform
Infrastructure Resources Provided by the Platform
Types of Dynamic Infrastructure Platforms
Deciding on a Dynamic Infrastructure Platform
Mechanical Sympathy with the Cloud and Virtualization
Chapter 3Infrastructure Definition Tools
Choosing Tools for Infrastructure as Code
Configuration Definition Files
Working with Infrastructure Definition Tools
Chapter 4Server Configuration Tools
Goals for Automated Server Management
Tools for Different Server Management Functions
Server Change Management Models
Chapter 5General Infrastructure Services
Considerations for Infrastructure Services and Tools
Sharing a Service Between Teams
Monitoring: Alerting, Metrics, and Logging
Distributed Process Management
Chapter 6Patterns for Provisioning Servers
Patterns for Creating Servers
Patterns for Bootstrapping New Servers
Chapter 7Patterns for Managing Server Templates
Stock Templates: Can’t Someone Else Do It?
Provisioning Servers Using Templates
The Process for Building a Server Template
Updating Server Templates
Building Templates for Roles
Automating Server Template Management
Chapter 8Patterns for Updating and Changing Servers
Models for Server Change Management
General Patterns and Practices
Patterns and Practices for Continuous Deployment
Patterns and Practices for Immutable Servers
Practices for Managing Configuration Definitions
Chapter 9Patterns for Defining Infrastructure
Running Definition Tools
Chapter 10Software Engineering Practices for Infrastructure
VCS for Infrastructure Management
Continuous Integration (CI)
Continuous Delivery (CD)
Managing Major Infrastructure Changes
Chapter 11Testing Infrastructure Changes
The Agile Approach to Testing
Structuring the Test Suite: The Test Pyramid
Implementing a Balanced Test Suite
Managing Test Code
Roles and Workflow for Testing
Chapter 12Change Management Pipelines for Infrastructure
Benefits of a Change Management Pipeline
Guidelines for Designing Pipelines
Basic Pipeline Designs
Practices for Using a Pipeline
Scaling Pipelines to More Complex Systems
Techniques for Handling Dependencies Between Components
Practices for Managing Interfaces Between Components
Kief Morris has been designing, building, and running automated IT server infrastructure for nearly twenty years, having started out with shell scripts and Perl, moving on to CFengine, Puppet, Chef, and Ansible among other technologies as they’ve emerged. He is the head of ThoughtWorks’ European practice for Continuous Delivery and DevOps, helping clients find more effective ways of building and managing infrastructure operations.
The animal on the cover of Infrastructure as Code is Rüppell's vulture (Gyps rueppellii), native to the Sahel region of Africa (a geographic zone that serves as a transition between the Sahara Desert and the savanna). It is named in honor of a 19th-century German explorer and zoologist, Eduard Rüppell.
It is a large bird (with a wingspan of 7–8 feet and weighing 14–20 pounds) with mottled brown feathers and a yellowish-white neck and head. Like all vultures, this species is carnivorous and feeds almost exclusively on carrion. They use their sharp talons and beaks to rip meat from carcasses, and have backward-facing spines on their tongue to thoroughly scrape bones clean. While normally silent, these are very social birds who will voice a loud squealing call at colony nesting sites or when fighting over food.
The Rüppell's vulture is monogamous and mates for life, which can be 40–50 years long. Breeding pairs build their nests near cliffs, out of sticks lined with grass and leaves (and often use it for multiple years). Only one egg is laid each year—by the time the next breeding season begins, the chick is just becoming independent. This vulture does not fly very fast (about 22 mph), but will venture up to 90 miles from the nest in search of food.
Rüppell's vultures are the highest-flying birds on record; there is evidence of them flying 37,000 feet above sea level, as high as commercial aircraft. They have a special hemoglobin in their blood that allows them to absorb oxygen more efficiently at high altitudes.
This species is considered endangered and populations have been in decline. Though loss of habitat is one factor, the most serious threat is poisoning. The vulture is not even the intended target: farmers often poison livestock carcasses to retaliate against predators like lions and hyenas. As vultures identify a meal by sight and gather around it in flocks, hundreds of birds can be killed each time.
The book gives me a broader culture and a grip on proven patterns when it comes to infrastructure automation. It drives the reader from a comprehensive introduction to the insights of infrastructure as code.
I work as in a IT company that transitions from a long tradition of on-premise hosting to public and hybrid cloud hosting. We want (and need) to take advantage on this transition to push the cultural changes associated with full infrastructure automation.
I am not done with reading yet (I'm about mid-part 3), but so far it enriched my daily work and gave me perspective on some topics.
To make things even nicer, the book is written in a lively style that I enjoy. It sometimes is disturbing how a few bad habits we have at the company are perfectly described in the "Antipatterns" highlights :).
I recommended the book to a few coworkers. However, I think the book would not be that useful to people that are already used to coding their infrastructures.
Bottom Line Yes, I would recommend this to a friend
Fantastic coverage of architecture, process and antipatterns
About Me Developer, Devops Engineer, Sys Admin
Easy to understand
Comments about oreilly Infrastructure as Code:
A fantastic book that provides the same coverage of the concept of 'Infrastructure as Code' as Humble and Farley's book did for continuous delivery, and Newman's book did for microservices. This book is relevant whether you're operating in the public IaaS cloud, community cloud, private VM-based IaaS datacenter, or bare-metal cloud.
A quick word of caution - don't expect to be a Terraform/Ansible/Puppet/OpenStack/AWS expert after you have finished reading, as this is not the point of this book (and besides, there are already many great books covering specific technologies). However, Morris has managed to cram an excellent high-level overview of all of these tools in only 300 pages, and more importantly, he provides the context, application and antipatterns of using these tools.
I believe nearly everyone in the infrastructure space will get something out of this book - seasoned operators/sysadmins will be able to take away a coherent view to the new style of building and managing infrastructure (not to mention a bunch of new tools and techniques to research); and those new to the scene will be able to develop an appreciation for the how everything knits together, and gain an understanding of the architectural patterns and practices surrounding practices that the like of Google, AWS and Netflix have been using for years.
Big kudos to the author, Kief Morris - I don't think he could have written a better book that both summarises the current state-of-the-art for architecting, deploying and managing infrastructure, and also provides excellent recommendations and documents well-established antipatterns for both associated architecture and process. A job well done!
Bottom Line Yes, I would recommend this to a friend