2022. 1. 29. 22:01ㆍDevOps/Terraform
infrastructure as code의 약자로서 infra는 네트워크, 로드벨런서, 저장소, 서버 등의 인프라 자원을 의미하며, 말 그대로 이런 인프라 자원을 코드로 관리하는것을 의미한다. 주로 terraform, AWS CloudFormation, Pulumi, Azure Arm Template 등이 있다.
그럼 CM은 무엇일까? Configuration Management 의 약자로서 서버 운영 체제 상의 필요한 소프트웨어를 설치하고 원하는 설정으로 관리할 수 있는 것이다. 대표로 우분투, 리눅스 서버 등이 있다. 서버 상에 엔진을 설치하고, 필요한 서비스를 올리고, 방화벽을 설치하는 등의 방법을 사용하는것이다. 이런 관리는 사람이 손으로 직접 하는것이 아닌 자동화로써 Configuration as Code가 나타나게 되었다. 이것을 도와주는 형상관리도구의 대표로써는 Ansible, Puppet, Chef, Salt Stack등이 있다.
이 둘의 비교점은 아래의 링크를 참조하면 좋다.
https://www.linkedin.com/pulse/qa-configuration-management-tools-vs-infrastructure-code-jenkins
그런데 왜 이런 as Code 개념을 알아둬야할까?? 이런 코드를 관리한다는것은 사람이 메뉴얼을 보며 처리하는것이 아닌 일괄적으로 컴퓨터가 코드로 관리한다는 의미이다. 이렇게 될 경우 휴먼 에러(코드를 수기로 작성시 ,.:; 와 같은 것들이 오탈되어 실행되지 않는 등 인간이 할 수 있는 실수)를 방지할 수 있으며 이미 만들어진 코드가 있기 때문에 이 코드를 다른 PC에 그대로 사용할 수 있으며 일관성을 유지할 수 있다.
코드이기 때문에 소프트 웨어 개발처럼 Git과 같은 VCS(버전 관리 시스템)을 사용할 수 있으며 Audit(변경내용 추적)을 할 수 있다. 또한 협업을 통한 코드 리뷰를 하기도 쉽다.
코드가 원하는 형태를 선언적으로 정의할 수 있으며 Terraform으로 대표되는 선언형(Declarative Configuration)과 Ansible, Shell script로 대표되는 순차적으로 명령어를 수행하는 절차형(Imperative Configuration)선언으로서 나눠질 수 있다.
이런 모든 개념은 기존 인프라 문제를 코드로 관리해 해결하기 위한 시도로써 인프라 문제를 자동화하고, 버전관리를 하는 등 DevOps를 실천하기위한 최선책이라고 할 수 있다.
'DevOps > Terraform' 카테고리의 다른 글
Terraform설치방법(테라폼, 패커, 엔서블 for ubuntu) (0) | 2022.03.16 |
---|