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)