infrastructure as code infrastructure as code iac is the process of managing and provisioning computer data centers through machinereadable definition files rather than physical hardware configuration or interactive configuration tools the it infrastructure managed by this comprises both physical equipment such as baremetal servers as well as virtual machines and associated configuration resources the definitions may be in a version control system it can use either scripts or declarative definitions rather than manual processes but the term is more often used to promote declarative approaches iac approaches are promoted for cloud computing which is sometimes marketed as infrastructure as a service iaas iac supports iaas but should not be confused with it overview iac grew as a response to the difficulty posed from two pieces of technology utility computing and secondgeneration web frameworks this brought about widespread scaling problems for many enterprises that were previously only witnessed by huge companies in february 2011 amazon announced aws cloudformation added value and advantages the value of iac can be broken down into three measurable categories cost reduction speed faster execution and risk remove errors and security violations types of approaches there are generally three approaches to iac declarative functional vs imperative procedural vs intelligent environment aware methods there are two methods of iac push and pull the main difference is the manner in which the servers are told how to be configured in the pull method the server to be configured will pull its configuration from the controlling server in the push method the controlling server pushes the configuration to the destination system tools there are many tools that fulfill infrastructure automation capabilities and use iac broadly speaking any framework or tool that performs changes or configures infrastructure declaratively or imperatively based on a programmatic approach can be considered iac continuous configuration automation all continuous configuration automation cca tools can be thought of as an extension of traditional iac frameworks it leverages iac to change configure and automate infrastructure but it also provides visibility efficiency and flexibility in how your infrastructure is managed these additional attributes provide enterprise level security and compliance making companies keen on implementing these types of tools community content an important aspect when considering cca tools if they are open source is the community content as gartner states the value of cca tools is as dependent on user communitycontributed content and support as it is on the commercial maturity and performance of the automation tooling new vendors are emerging that are not content driven but model driven with the intelligence in the product to deliver content these visual objectoriented systems work well for developers but they are especially useful to production oriented devops and operations constituents that value models versus scripting for content as the field continues to develop and change the community based content will become ever important to how iac tools are used unless they are model driven and object oriented notable cca tools include tool released by method approach written in ansible tower redhat push declarative and imperative python cfengine cfengine pull declarative chef chef pull declarative and imperative ruby otter inedo push declarative and imperative puppet puppet pull declarative ruby saltstack saltstack push and pull declarative and imperative python terraform hashicorp push declarative go relationship to devops iac can be a key attribute of enabling best practices in devops developers become more involved in defining configuration and ops teams get involved earlier in the development process aws cloudformation 