본문 바로가기

DevOps/Automation

Puppet Part 5

 

Today key : Puppet, 퍼펫, manifest, autumation, 자동화, class, 클래스, module, 모듈

 

개인적으로 정리하는 Puppet의 5번째 포스팅입니다.

이번 포스팅은 지난 포스팅과 연장선상에 있는 manifest 모듈 작성과 관련한 내용입니다. 

지난 포스팅이 하나의 Environment에 대한 내용이었다면,

이번 포스팅은 다양한 Environment에서 사용 가능한 모듈을 작성하는 내용입니다.

아마도 모듈에 대한 내용은 추가적인 포스팅이 있을 것 같습니다.   

혹시 잘못되거나 수정해야 할 부분이 있으면 덧글 부탁드립니다! ^^

 


 

Puppet Part 5

 

 

Puppet  Module 1

   •manifest에서 Class 사용하기 위해서 Class 정의하기 위해서는 사용하고자 하는 Manifest에서 사용할 수도 있지만,

      Class들을 별도의 Manifest 파일로 작성 있음.

   •Class 별도의 Manifest 분리하여 Module로써 사용하게 되면 작성된 코드를 재사용하거나, 이력관리,

       코드의 유지 보수에 유용함.

   •Puppet 이용하여 관리되는 Node 정의하는 Manifest 실제 관리되는 Resource 대한 Attribute 선언하는

       Manifest 분리하여 작성하는 편이 유용.

 

 

 

Class 모듈화 예제

   •zigispace라는 file 내용을 갖는 blog라는 파일을 생성하는 blog.pp

   •Node OS 종류를 file 내용으로 갖는 osver라는 파일을 생성하는 osver.pp

   •blog.pp osver.pp class 가져다가 node 적용하는 maindev.pp

   •blog.pp osver.pp 다른 manifest 다른 node에서도 동일하게 적용 가능.

 

 

 

 

 

 

 

 

 

 

 

Puppet  Module 2

   하나의 environments에서 class 별도의 manifest 모듈로 분리하여 선언할 수도 있지만, 다수의 environment에서

     공용으로 사용할 있도록 구성할 있음.

   모듈로 사용하고자 하는 Manifest modules 디렉토리의 하위에 위치

   특정 기능을 하는 모듈 별로, modules 디렉토리 하위에 서브 디렉토리를 생성하고, 서브 디렉토리 하위에 manifests라는

      해당 모듈에 들어가는 manifest 위치할 디렉토리를 만들어서 manifest 파일을 관리함.

   •modules 디렉토리에서 manifest 모듈을 관리할 때에는 다음과 같은 규칙으로 관리를 해야 .

         - modules 하위에 module 이름으로 모듈 디렉토리를 생성

          - 모듈 디렉토리 하위에는 manifests라는 하위 디렉토리를 생성하고, 하위 디렉토리에서 manifest 파일을 생성

          - modules 내의 manifest 파일의 class명은 위에서 선언한 모듈디렉토리를 기준으로 지정. 

          - , module 이름과 동일한 이름의 class 경우에는 파일명을 init.pp 이라고 명명해야 .

          - init.pp 이외의 다른 manifest 파일의 클래스는 클래스 선언 , module 이름을 포함하여 클래스를 선언

              * module::클래스명

              * 기존의 프로그래밍에서 namespace 지정하는 것과 유사함.

           - manifest 파일명은 클래스명과 동일하게 지정. 

 

 

Puppet  Module 구성 에제

   •zigimod라는 module 2개의 manifest 파일을 구성하고, 사용하는 예제

   •modules 하위 디렉토리의 구성과 manifest 파일의 예제 코드

 

 

 

 

 maindev.pp

 init.pp

node 'agent1' {

   include zigimod

}

class zigimod {

   file { '/zigi/mod1':

     content => "module1\n",

   }

}

 

 

 

 maindev.pp

 mod2.pp

node 'agent1' {

   include zigimod::mod2

}

class zigimod::mod2 {

   file { '/zigi/mod2':

     content => "module2\n",

   }

}

 

 

 

Puppet  Module 3

 기본 Puppet 속성의 ModulePath 속성 이외에 Module 디렉토리를 사용하고자 경우에는 ModulePath 추가해야 .

 •modules 디렉토리에는 모듈 형태로 사용하고자 하는 manifest 뿐만 아니라 file, plug-in, template 등도 추가하여 사용.

 •module에서 사용하는 자원들의 종류에 따라서 개별 디렉토리 사용.

           ex> manifest manifests 디렉토리, file files 디렉토리 ..