Today key : Puppet, 퍼펫, manifest, autumation, 자동화, Architecture, 아키텍처, Catalog, 카탈로그, facts
지난 번에 이은, Puppet의 3번째 포스팅입니다.
이번 포스팅은 Puppet을 조금 더 이해하기 위한 간단한 아키텍처와 동작 방식에 대한 내용입니다.
우선 짧지만, 정리하는 데로 추가로 올리거나 업데이트 할 예정입니다.
혹시 잘못되거나 수정해야 할 부분이 있으면 덧글 부탁드립니다! ^^
Puppet Part 3
Puppet Architecture 일반
• Puppet은 일반적은 master/agent(혹은 Server/Client) 구조의 Puppet Master와 Puppet Agent로 사용.
• Puppet Apply Application을 통한 self-contained(Standalone) 구조로도 실행 가능.
Puppet를 통한 Node 관리를 위한 2개의 Main Stage
• Catalog 컴파일
• Catalog 적용
Master/Agent 구조에서의 기본 동작
• Agent에서는 Puppet Agent App가 Background 서비스 처럼 동작하고, 하나 이상의 Puppet master App가
동작하는 Puppet Server가 동작.
•Agent는 주기적으로(Default 30분) Master에게 자신의 facts를 전송하고, Catalog를 요청
•Master는 Catalog 생성을 위해서 컴파일 후에 Node에게 Catalog를 전송
•Agent는 Catalog를 수신 받아서, catalog에 정의된 내용과 현재의 Resource와 비교하여 Catalog의 내용을 적용.
• Catalog 적용 후, Agent는 Report를 Master로 전송
Standalone 구조에서의 기본 동작
•Puppet Apply를 통해서 노드를 관리
•일반적으로 예약된 작업(Scheduled task)혹은 Cron Job으로 수행.
•Master/Agent 구조와 마찬가지로 Puppet은 노드 관리를 수행하기 위해서 컴파일 과정을 거치게 됨.
•컴파일 된 Catalog를 통해서 Resouce들을 Catalog에 내용대로 적용.
•Catalog 적용 후, Report를 Disk에 저장
Catalog
• 관리하는 자원에 대해서 각 자원에 대해 원하는 상태(Desired state)를 기술
• 특정 순서로 관리를 해야 하는 경우에, 각 리소스에 설정에 대한 종속성 정보를 제공 가능.
• 노드를 설정할 때(configuring), Puppet agent는 catalog라고 부르는 Master 서버로부터 전송 받은 document를 사용.
Catalog Compile
• Puppet은 3가지의 설정 정보의 main-sources를 사용하여 catalog를 컴파일 함.
▫ Agent-provided data
- agent는 catalog를 받기 위해서 master에게 자신의 정보를 전송할 때 아래의 4가지 정보를 전송.
1. name. (일반적으로 certname과 같다.) 2. certficate
3. facts 4. environment
▫ External data
▫ Puppet manifests
- main manifests와 Modules ( Puppet Forge로 부터 다운, 각 사이트에서 직접 작성)
FACTS
•catalog 요청 전에 Facter를 사용하여 시스템의 정보를 수집.
•puppet은 이렇게 수집된 정보를 facts 정보라 하고, 이것은 manifest에서 사용 될 pre-set variables로 사용.
.