본문 바로가기

DevOps/Automation

Puppet Part 6

 Today Key : Puppet, 퍼펫, Environment, 환경, Manifest, Group, 그룹, Production, conf, automation, 자동화

 

 

새로 쓰는 Puppet 관련 6번째 포스팅입니다.

정리를 해두고, 포스팅 하는 데까지 이래저래 시일이 걸리기도 하고 다른 것들을 보느라,

더뎌지고 있지만.. 앞으로 더 포스팅 예정입니다.

이번 포스팅은 Puppet의 Agent를 그룹화 하여 관리할 수 있는 Environment에 대한 내용입니다.

Environment에 대한 전부를 다루는 것은 아니지만, Environment를 조금이나마 이해하고

사용하는 데 도움이 되셨으면 합니다.

 


 

Puppet  Environments

  Production, QA, Development 같은 다양한 환경에서 Puppet으로 자원을 관리하고자 , Environment Puppet Agent들을 그룹으로 나눠서 관리할 있음.

  Master Server Environment별로 독립적인 Main manifest와 module paths 제공 가능 .

  물론 Puppet Master 분리하여 Agent 독립적으로 관리할 있지만, Environment 통해서 보다 유연하게 관리)

  Agent Node Environment 할당하기 위해서  Agent config 파일을 사용하여 Environment 지정하거나,  혹은 ENC 사용(External node classifier) 있음.

 

 

 

 

< Default Production Environment 적용 >

 

 

 

< Production Development Environment 적용 >

 

 

Puppet  Master에서 Environments 구성

  Environment는 directory로 구분되며, 몇 가지 규약이 있음 .

    - Directory의 이름이 environment의 이름이 됨.

    - puppet master서버의 environmentpath에 존재해야 하며, 일반적으로 $codedir/environment 를 사용.

       * default로 codedir/etc/puppetlabs/code Directory.

    - environment에는 modules directory를 포함할 수 있으며, 이 경우에는 해당 경로는 environment의 default modulepath의 일부가 된다.

   - manifest directory를 포함할 수 있으며,  그 디렉토리가 해당 environment에 default main manifest가 됨.

   - environment에서 environment.conf 파일을 포함할 수 있으며, 이 경우에는 modulepath와 manifest를 포함한 몇 가지 설정이 override될 수 있음. 

       * 특정 environment의 directory에 위치

 

< Environment 내의 설정파일 >

 

 

다음은 environments dev, production, zigimani 디렉토리가 생성된 구성 예제임.

 

 

< environment 구성 예제 : production, dev, zigimani 라는 3개의 environment 각각 존재 >

 

 

 

Agent 설정 파일로 Environment 설정하기

  • Agent node puppet.conf 설정 파일의 agent 혹은 main config section에서 설정 가능.

 

 

 

 

Environment 존재하지 않는 경우

  •Agent node 구성되지 않는 environment 할당될 없음.

  만약 environmentpath 디렉토리에 해당 environment 존재 하지 않는 경우에는 Puppet master 해당 Catalog

     컴파일이 실패함.

  , default environment production 없는 경우에는 agent 카탈로그를 검색. (Fail 아닌 Successfully)