리눅스/Part3. Ch09. 설정 자동화 도구

01. Configuration Management의 이해

Engineer-Lee 2022. 12. 17. 22:01
반응형

전통적인 시스템 관리 방법

- 장애가 발생할 때마다 자체 개발한 셸 스크립트로 처리
   -> 급한 장애는 처리하지만, 시간이 지나면서 재현할 수 없는 패키지 버전과 환경설정으로 변경
- 그 외에도 업그레이드 / 패치 작업등으로 서버들의 형상은 시간이 지날 수록 다른 모습이 됨

 

 

좀 더 나은 설정 방법 -> 환경 설정 관리

- 코드 형태로 원하는 상태를 관리
   -> 수동으로 시스템 수정하지 않아야 함
- 코드는 버전 관리 시스템으로 관리
- 대부분의 환경 설정 관리 도구는 절차적이 아닌, 선언적 방식을 사용
   -> 시스템 변경을 위한 개별 단계를 알려주는 방식이 아닌, 달성하려는 상태를 선언
- 대표적인 도구 : Ansible, Salt, Puppet, Chef

 

 

환경 설정 관리 도구의 주요 개념

- 오퍼레이션과 매개변수

. 오퍼레이션
  예) 사용자 계정 생성/제거/속성 설정, 시스템간 파일복사, 서비스 재시작, 임의의 셸 명령 실행 등
   -> 자체 구현 언어로 작성되지만, 내부적으로는 표준 셸 명령을 사용하는 경우가 많음
. 매개변수
  예) 패키지 설치 오퍼레이션: 패키지명, 버전, 패키지 설치 위치 등
   -> 오퍼레이션에 따라 다름. 편의상 가장 일반적인 사용 사례에 맞춰 기본값을 두는 경우가 많음.

 

- 오퍼레이션 vs. 유닉스 명령

. 멱등성을 가짐
   -> 반복적으로 적용 되도 동일한 결과를 가져오도록 구성
시스템 상태의 변경 여부를 알고 있음
   -> 현재 구성이 이미 요청 사항과 일치하는 경우 작업을 수행하지 않음
. 결과 상태를 보고
   -> 유닉스 스타일의 종료 코드보다 많은 정보를 가지고 있음
. 크로스 플랫폼
   -> 동일한 오퍼레이션이 수행 가능하도록 공통적인 함수 정의

 

 

환경설정 도구의 관리 범위

- 변수

. 개별 머신에 적용되는 환경설정에 영향을 주는 값
. 환경 설정 템플릿의 공백을 채워 줌


팩트

. 타겟 시스템의 기술적 정보 확인 à 네트워크 인터페이스 IP 주소, OS 정보, EC2의 태그 정보


클라이언트 인벤토리

. 관리되는 호스트의 목록
   -> 다양한 범주로 호스트를 나누는 방법을 정의
. 동적 인벤토리 관리 지원
   -> 동적으로 호스트 목록을 관리 (예, 스케일 아웃/인)

 

 

환경설정 도구 비교

- Ansible은 손쉽게 사용 및 운영 가능

  . agentless, 나머지는 master-agent 
     -> 장단점 존재
  . ansible 코어는 무료


- 프로젝트 활성화 상태도 Ansible이 우세

  . GitHub Starts, Google Trend, Debian 패키지 랭킹

 

반응형