본문 바로가기

DevOps/Automation

Automation for Networker[1] - Puppet : Part 1

 


 

기존 것들도 우왕~좌왕하면서..

새로운 주제의 포스팅을 시작합니다.

이것도 한 2~3주전쯤에 초안 정리하다가...  보지도 않다가.. 다시 콩알 만큼씩 보려고...

우선 다시.. 급 보기좋게(?) 마저 정리해서 포스팅을 합니다.

자주 올리지는 않겠지만.. 더디더라도.. 꾸준히 올릴 수 있도록 해보겠습니다! ^^

 


Puppet

  ▷ 기존에 정의된 Manifest에 의해서 현재 설정과 Manifest와 비교하여 변경된 부분에 대해서(혹은 초기 구동 시)

      필요한 부분에 대해서 각 환경에 맞춰서 자동으로 환경을 구성함.

 

  ▷ 하나의 Manifest로 다수의 장치에 대해서 동일한 작업을 수행하고 서로 동일한 환경을 구성할 수 있다.

 

  ▷ 다수의 수작업이 필요한 환경 구성 및 업데이트 등의 작업을 Manifest 관리만을 통해서 자동화 할 수 있으며,

      개별 작업으로 발생할 수 있는 오류 발생 가능성을 없애준다.

 

  ▷ 다양한 OS를  지원하기 때문에 운영 환경에 상관없이 동일하게 사용할 수 있다. (일부는 Agent만 지원)

 

Puppet 구성 요소 & 정의

  ▷ agent nodes, : Puppet에 의해서 관리되는 가상 혹은 물리 서버.

  ▷ puppet master server, : Agent Node를 관리하는 서버.

  ▷ console server : Site 관리를 위해서 Agent를 분석 관리하는 서버 (Master 서버에서 이 역할을 할 수도 있다.)

  ▷ database support server : PuppetDB와 데이타베이스들이 동작하는 Console 지원 서버 (Master 서버에서 이 역할을 할 수도 있다.)

 

  ▷ Manifest : Puppet를 통해 설정하고자 하는 환경에 대한 정의. 자원에 대한 기술 명세서.

 

  ▷ 자 원 : 사용자, 파일, S/W 등의 Puppet 관리 대상 , Manifest 만드는 것은 자원을 선언하는 것으로 볼 수 있다.

                 File / User / Group / Host / Package / Service 등등

 

  ▷ Catalog  : Puppet Master에서 Agent에게 내리는 명령

 

 

 Puppet 데몬 프로세스

  ▷ puppetmasterd : Puppet의 관리서버에서 실행

 

  ▷ puppetd : Puppet의 관리서버에서 적용받는 각 서버에서 실행,

         * 정기적으로(Default 30분) puppetmasterd에 요청하여 받은 결과값을 현재 설정과 비교하여 수정된 부분은 반영하도록 한다.

            이 때의 설정 파일은 puppetmasterd에서 다운로드 되어 처리.

            또한 정기적으로 반영되는 것 이외에 수동으로 직접 puppetmasterd에서 내릴 수도 있다. (puppetrun)

 

    ※ puppetmasterd와 puppetd 간의 통신은 SSL을 통해서 이뤄진다.

 

 

 

Puppet 기본 동작

  ▷  Puppet은 하나의 Master 서버에서 설정(아파치 설정, WAS 기동 등..)을 하면 각 Agent에게 설정 정보를 보냅니다.

       (이러한 명령을 "catalog" 라고 합니다.)

 

  ▷  이를 수신한 Agent는 변경된 설정 정보를 실행하고, 결과 리포트는 Master에게 전송 합니다.

 

 

 

 


  

※ Puppet 3.3 지원 OS(https://docs.puppetlabs.com/pe/latest/install_system_requirements.html)

 

 


Puppet 기타 소개 

 

퍼펫은 IT자동화 소프트웨어업체 '퍼펫랩스(Puppet Labs)'에서 만들었다. 특정 운영체제(OS)에 종속된 명령어 대신 자체 시스템 구성 언어를 써서 각 사용자, 서비스, 패키지를 관리하는 모델기반의 IT자동화 도구로 묘사된다. 유명 리눅스 배포판 저장소에서 'APT'나 'YUM' 패키지 형태로 내려받아 쓸 수 있다.

퍼펫은 오픈소스 버전과 그에 기반한 엔터프라이즈 버전 형태로 제공된다. 오픈소스판은 지난 2005년 공개된 첫 버전부터 2.7.0 버전까지는 GPL 기반으로, 그뒤부터 지난달 4일 공개된 3.1.0 버전까지는 아파치2.0 라이선스로 제공된다. 엔터프라이즈버전은 지난 2011년 2월 첫선을 보였다.

퍼펫랩스 설명에 따르면 퍼펫이 구동되는 환경은 모든 주요 리눅스 배포판, 솔라리스와 HP-UX와 AIX같은 주요 유닉스플랫폼, 마이크로소프트(MS) 윈도를 아우른다. 물리적인 인프라 뿐아니라 클라우드와 하둡 기반 환경도 다룰 수 있다. 아마존EC2에 특화된 이미지 '리눅스AMI'에도 퍼펫이 포함돼 있다.

퍼펫을 쓰면 인프라에 필수패키지를 자동적으로 설치한 뒤 연관 서비스를 시작하고 관리자가 의도한 상태로 통제할 수 있다. 일례로 구글은 서비스운영단을 제외한 사내 모든 리눅스 및 맥OS 기반 데스크톱, 노트북, 서버 인프라를 퍼펫으로 관리한다. 이밖에 트위터, 징가, 델, 뉴욕증권거래소 등이 사용중이다.