본문 바로가기

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)