Content deleted Content added
Undid revision 1139377378 by 68.6.125.58 (talk) See Tags: Manual revert Reverted |
m Removing link(s) Wikipedia:Articles for deletion/Otter (software) closed as delete (XFDcloser) |
||
(48 intermediate revisions by 36 users not shown) | |||
Line 1:
{{Short description|Data center management method}}
{{multiple issues|
{{Advert|date=March 2018}}
{{Technical|date=November 2021}}
}}
'''Infrastructure as code''' ('''IaC''') is the process of managing and provisioning computer [[data center]]
The [[IT infrastructure]] managed by this process comprises both physical equipment, such as [[bare-metal server]]s, as well as [[virtual machine]]s, and associated configuration resources.
The definitions may be in a [[Version Control System|version control system]], rather than maintaining the code through manual processes.
The code in the definition files may use either scripts or declarative definitions
==Overview==
IaC grew as a response to the difficulty posed by [[utility computing]] and second-generation web frameworks.
| last1=Bower |first1=Joseph L.
| last2= Christensen | first2= Clayton M.
| title= Disruptive Technologies: Catching the Wave
| journal= [[Harvard Business Review]]
}}</ref> created widespread scaling
|last1= Fletcher | first1= Colin | last2= Cosgrove | first2=Terrence
|title=Innovation Insight for Continuous Configuration Automation Tools
Line 38:
==Types of approaches ==
There are generally two approaches to IaC: [[declarative programming|declarative]] (functional) vs. [[imperative programming|imperative]] (procedural). The difference between the declarative and the imperative approach is essentially '' 'what' '' versus '' 'how' ''. {{anchor|Declarative}}The declarative approach focuses on what the eventual target configuration should be; the {{anchor|Imperative}}imperative focuses on how the [[infrastructure]] is to be changed to meet this.<ref >{{cite web
| url= https://www.scriptrock.com/blog/articles/declarative-vs.-imperative-models-for-configuration-management
| title= Declarative v. Imperative Models for Configuration Management: Which Is Really Better?
Line 56:
==Methods==
Infrastructure as Code (IaC) allows you to manage servers and their configurations using code. There are two
==Tools==
Line 66:
====Community content====
{{see also|List of systems management systems|Comparison of open-source configuration management software}}
|url=https://philsturgeon.uk/devops/2012/10/28/puppet-or-chef/
|title=Puppet or Chef?
|
|first= |
|access-date=29 January 2016
}}</ref> Other vendors rely on adjacent communities and leverage other IaC frameworks such as [[PowerShell]] DSC.<ref name=powershell/> New vendors are emerging that are not content-driven, but model-driven with the intelligence in the product to deliver content. These visual, object-oriented 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 more important to how IaC tools are used, unless they are model-driven and object-oriented.▼
|archive-date=1 February 2016
|archive-url=https://web.archive.org/web/20160201185444/https://philsturgeon.uk/devops/2012/10/28/puppet-or-chef/
|url-status=dead
▲ }}</ref> Other vendors rely on adjacent communities and leverage other IaC frameworks such as [[PowerShell]] DSC.<ref name=powershell/> New vendors are emerging that are not content-driven, but model-driven with the intelligence in the product to deliver content. These visual, object-oriented 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 more important to how IaC tools are used, unless they are model-driven and object-oriented.
Notable CCA tools include:
Line 77 ⟶ 82:
! Tool !! Released by !! Method !! Approach !! Written in !! Comments
|-
![[CFEngine]]▼
![[Chef (software)|Chef]]▼
|Northern.tech (1993)▼
|Chef (2009)▼
|Pull
|Declarative
|[[
| -
|-▼
![[Otter (software)|Otter]]▼
|[[Inedo]] (2015)▼
|Push▼
|Declarative and imperative▼
| -▼
| Windows-oriented▼
|-
![[Puppet (software)|Puppet]]
Line 96 ⟶ 94:
|Declarative and imperative
| [[C++]] & [[Clojure]] since 4.0, [[Ruby (programming language)|Ruby]]
▲| -
▲|-
▲![[Chef (software)|Chef]]
▲|Chef (2009)
|Pull
▲|Declarative and imperative
| -
|-
Line 105 ⟶ 110:
| -
|-
! [[Ansible (software)|Ansible]] / [[Ansible (software)#Ansible Automation Platform|Ansible Tower]]▼
▲![[CFEngine]]
| [[Red Hat]] (2012)▼
▲|Northern.tech
| Push and Pull
| Declarative and imperative
|[[
| -
|-
Line 119 ⟶ 124:
| -
|-
!Otter
▲! [[Ansible (software)|Ansible]] / [[Ansible (software)#Ansible Automation Platform|Ansible Tower]]
▲| [[Red Hat]] (2012)
|
|
▲|[[Python (programming language)|Python]]
| -
▲| Windows-oriented
|-
![[Pulumi]]
|-▼
|Pulumi (2018)
▲|Push
|Declarative and imperative
|[[Go (programming language)|Go]]
| -
▲|-
! [[OpenTofu]]
| [[Linux Foundation]] and contributors (2023)
| Push
| Declarative and imperative
| [[Go (programming language)|Go]]
| Terraform fork
|}
Other tools include [[AWS CloudFormation]], [[cdist]], [[StackStorm]], [[Juju (software)|Juju]], and Step CI.
==Relationships==
===Relationship to DevOps===
IaC can be a key attribute of enabling best practices in [[DevOps]]
=== Relationship to security ===
The 2020 Cloud Threat Report released by Unit 42 (the threat intelligence unit of cybersecurity provider [[Palo Alto Networks]]) identified around 200,000 potential vulnerabilities in infrastructure as code templates.<ref>{{Cite web|url=https://www.informationweek.com/cloud/cloud-threat-report-shows-need-for-consistent-devsecops/a/d-id/1337023|title=Cloud Threat Report Shows Need for Consistent DevSecOps|website=InformationWeek|date=13 February 2020|language=en|access-date=2020-02-24}}</ref>
== See also ==
* [[IT infrastructure]]
* [[Infrastructure as a service]]
* [[Orchestration (computing)|Orchestration]]
* [[Continuous configuration automation]]
* [[Landing zone (software)]]
==References==
Line 173 ⟶ 187:
[[Category:Orchestration software]]
[[Category:Cloud computing]]
|