Conclusion

Infrastructure as code is about enabling the reconstruction of the business from nothing but a source code repository, an application data backup, and bare metal resources. To get there, you follow a two-step process:

  1. Break the infrastructure down into reusable, network-accessible services.

    Each service should have some combination of the 10 core principles of well-built infrastructure services:

    • It should be modular.

    • It should be cooperative.

    • It should be composable.

    • It should be flexible.

    • It should be extensible.

    • It should be repeatable.

    • It should be declarative.

    • It should be abstract.

    • It should be idempotent.

    • It should be convergent.

  2. Integrate those services together.

    Build policies for how each service should function individually, and then start building policies about how they interact with each other to solve larger and larger chunks of your infrastructure. Follow the pattern of policy creation, execution, auditing, and testing set out in traditional configuration management:

    1. Document what the problem is, and what the final result of any solution should be. (Setting the policy)

    2. Write the code to do what you laid out in the policy. (Executing the policy)

    3. Confirm that the final results are correct. (Auditing the policy)

    4. Repeat the process so that you are certain you can reliably do it again someday. (Testing the policy)

By following this process, you will create a powerful, flexible infrastructure that can be managed entirely as code.

Get Web Operations now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.