모듈에 적용할 기능은 모듈 디렉터리 아래 manifests에 매니페스트로 구현합니다. 매니페스트마다 퍼팻 코드를 클래스로 작성해야 합니다. 모듈의 기본 매니페스트 init.pp에는 모듈 이름과 같은 클래스를 작성할 수 있습니다. 최종적으로 코드 디렉터리의 기본 매니페스트 site.pp에서 노드 선언을 하고 모듈을 호출할 것입니다. 이때 가장 우선하여 반영되는 모듈 코드는 init.pp에 작성한 코드가 됩니다.
모듈 매니페스트 또한 분리해서 작성 가능합니다. 일반적으로 퍼팻 코드로 제공할 기능을 함축해서 매니페스트와 클래스 이름을 짓습니다. 모듈 이름 다음에 이름 공간 구분자(namespace separator)인 콜론 2개(::)와 매니페스트 이름을 붙이면 클래스 이름이 됩니다. 웹 응용 프로그램을 제공하는 webapp 모듈을 작성한다고 가정하면 웹 서버 관리 기능은 매니페스트 apache.pp에 webapp::apache 클래스로, 데이터베이스 관리 기능은 매니페스트 db.pp에 webapp::db 클래스로 구현할 수 있습니다.
▲ 그림 12-11 모듈과 클래스 이름