PRMとは?
PRMとは、
現在のところレシピが充実しているわけでもなく、
PRMのアーキテクチャ
PRMのアーキテクチャを簡単な図にしてみると以下のようになります。
![PRMのアーキテクチャ PRMのアーキテクチャ](/assets/images/admin/serial/01/puppet/0011/thumb/TH394_prm_architecture.jpg)
リモートとローカルのリポジトリには、
prmコマンドを利用して、
また、
PRMのインストール
PRMのソースコードはMercurialリポジトリでのみ公開されていますので、
$ sudo yum install python-devel
$ sudo yum install mercurial
他のディストリビューションやOSでも、
$ hg clone http://hg.et.redhat.com/hg/emd/applications/prm/
$ cd prm
$ sudo python setup.py install
これで prm コマンドが利用できるようになります。
prmコマンドの使い方
設定ファイル
PRMの設定ファイルはデフォルトで/etc/
[main]
repoPath = /var/lib/puppet/recipes
manifestPath = /etc/puppet/manifests/prm
configPath = /var/lib/puppet/config
repoPathはローカルリポジトリとして利用するディレクトリを指定します。manifestPathはレシピに含まれるマニフェストを置く場所を指定します。configPathはレシピに含まれる、
コードの修正
そのままでは動かない機能があるため、
diff -r 9a58e277cd5d prm_repo.py
--- a/prm_repo.py Mon Feb 04 06:34:46 2008 +0900
+++ b/prm_repo.py Mon Feb 04 06:35:42 2008 +0900
@@ -115,7 +115,7 @@ class Repo:
# er, we should let the user pass in a commit message...
commitMessage = "Automatic commit by prm commit"
- buf = self.scm.commit(None, commitMessage)
+ buf = self.scm.commit(commitMessage)
print buf
def deployManifests(self):
diff -r 9a58e277cd5d prm_scm.py
--- a/prm_scm.py Mon Feb 04 06:34:46 2008 +0900
+++ b/prm_scm.py Mon Feb 04 06:35:42 2008 +0900
@@ -106,30 +106,26 @@ class Mercurial(SCM):
def commit(self, message=None):
- os.chdir(self.localPath)
cmdstring = "hg commit -m \"%s\"" % message
buf = self._popenAndRead(cmdstring)
return buf
def tag(self, tagname):
- os.chdir(self.localPath)
cmdstring = "hg tag %s" % tagname
buf = self._popenAndRead(cmdstring)
return buf
def pull(self):
- os.chdir(self.localPath)
cmdstring = "hg pull"
buf = self._popenAndRead(cmdstring)
return buf
def update(self, revision=None):
self.pull()
- os.chdir(self.localPath)
revstr = ""
if revision:
- revstr = " %s" % revision
- cmdstring = "hg update -m %s" % (revstr)
+ revstr = "-r %s" % revision
+ cmdstring = "hg update %s" % (revstr)
buf = self._popenAndRead(cmdstring)
return buf
レシピのダウンロード
レシピのサンプルとして、
$ sudo prm get http://hg.et.redhat.com/hg/emd/recipes/fedora-yum
/var/
レシピのアップデート
リモートリポジトリ上のアップデートをローカルに反映させるためには、
$ sudo prm update fedora-yum
レシピのコミット
ローカルにあるレシピを修正して、
ローカルでレシピを修正する場合には、
修正したレシピをコミットするには、
$ sudo prm commit fedora-yum
レシピのタグづけ
レシピにタグづけするためには、
$ sudo prm tag -r REL-20080204 fedora-yum
レシピの一覧
ローカルにあるレシピの一覧を表示するには、
$ prm list
Standard yum repo configurations for Fedora machines
Enable httpd userdirs on machines running SELinux enforcing
prm listではrecipe.
PRMレシピの作成
PRMレシピを作成して配布する場合には、
files/ (Puppetクライアントへの配布用ファイル)
manifests/ (マニフェスト)
README (レシピの説明)
recipe.xml
recipe.
<recipe xmlns="http://redhat.com/prm/1.0" name="URL" version="1.0">
<label>short human-readable freeform label</label>
<description>freeform text explaining what this recipe does</description>
<dependencies>
<require recipe="URL1"/>
<require recipe="URL2"/>
</dependencies>
</recipe>
labelでレシピの名前を指定し、
PRMは一年以上アップデートされていないようですし、
次回はCftというPuppet関連ツールをご紹介します。