「puppet」の編集履歴(バックアップ)一覧はこちら
puppet - (2009/02/23 (月) 23:35:09) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
#right(){Last Update &date()}
*Puppet
Linuxのシステム管理ツール。
多数のLinuxを管理者の定義した管理ポリシー(manifest)に従わせることができ、
まさに操り人形。
ファイルの配布、サービスの起動/停止、パッケージのインスト、等々を集中管理。
Cfengineの後継と目されていて、柔軟なmanifestの定義が魅力。
Rubyで作られている。
最新は0.24系。
**リンク
-[[本家サイト>http://reductivelabs.com/trac/puppet]]:
-[[puppet wiki (パペウィキ)>http://trac.mizzy.org/puppet]]:本家のドキュメントを日本語化している
-[[オープンソースなシステム自動管理ツール Puppet>http://gihyo.jp/admin/serial/01/puppet]]:全18回の技術評論社のWEB記事
-[[Puppetを導入してみました>http://blog.nicetrip.org/ruby/puppet%E3%82%92%E5%B0%8E%E5%85%A5%E3%81%97%E3%81%A6%E3%81%BF%E3%81%BE%E3%81%97%E3%81%9F]]:
-[[Puppet の競合 Chef のファーストインプレッション>http://trac.mizzy.org/public/wiki/ChefFirstImpression]]:Chefは手間が掛かりそう
-[[ネットワーク上でのシステム管理を容易にするPuppet>http://www.itmedia.co.jp/enterprise/articles/0808/25/news014.html]]:ITmediaの記事
-[[だ!日記 - ロンドンより>http://www.madoro.org/nikki/tag/puppet]]
-[[システム自動管理ツールPuppetを使ってみた>http://labs.unoh.net/2008/02/puppet.html]]
-[[ネットワーク上でのシステム管理を容易にするPuppet>http://sourceforge.jp/magazine/08/08/21/0210246]]
-[[Puppet使い始めました>http://l-w-i.net/m/20080504_01.txt]]
-[[Puppetって?>http://projects.tsuntsun.net/~nabeken/Puppet.html]]
-[[Hideki's Blog 2nd>http://zephel.com/archives/linuxunix/puppet/]]
-[[Puppet(システム自動設定ツール)の導入を考える>http://kurusugawa.jp/blog/archives/category/puppet]]
-[[Lucie EC2 の Puppet 設定を置くためのリポジトリ>http://github.com/yasuhito/ec2-puppet/tree/master]]
**書籍
-[[Pulling Strings with Puppet>http://www.amazon.com/dp/1590599780]]
**ダウンロード
-[[EPELのRHEL5(i386)用RPM>http://download.fedora.redhat.com/pub/epel/5/i386/]]:puppet、puppet-server、facterをDLできる
&ref(http://ecx.images-amazon.com/images/I/51f9DjcytaL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU01_.jpg)
**注意点
-RedHat EL5.2標準でインストールされる[[ruby-1.8.5はメモリリークするらしい>https://reductivelabs.com/trac/puppet/wiki/PuppetRedHatCentos]]。&br()ruby-1.8.6以上を使うのが良いらしい。
-0.24.5でpuppetrunを実行すると"Failed to load ruby LDAP library."のエラーになる。&br()最新版で修正されているかは未確認。
**サーバー側のインストールと設定
環境はRedHat EL5.2 Server(x86)のCDから構築した。
yumレポジトリが適切に設定されていてfacterもインストールできるようになっていれば、
% yum install puppet-server
でインストールは完了する。
インストール後、
#highlight(shell,linenumber){
puppetmasterd.confにautosign=trueと追記
% touch /etc/puppet/manifests/site.pp →とりあえず空のマニフェストを作っておく
% puppetmasterd --mkusers
% chkconfig puppetmaster on
% service puppetmaster start}
としてpuppetmasterdを起動する。
**クライアント側のインストールと設定
環境はRedHat EL5.2 Client(x86)のCDから構築した。
yumレポジトリが適切に設定されていてfacterもインストールできるようになっていれば、
% yum install puppet
でインストールは完了する。
インストール後、
#highlight(shell,linenumber){
puppetd.confにserver=puppetmasterdのサーバーを追記
% chkconfig puppet on
% service puppet start}
とする。
すると、puppetdはpuppetmasterdに証明書(CA)のサインを要求しにいく。
サーバー側のpuppetmasterdはautosign設定になっているのでクライアントの証明書にサインする。
以後、puppetdは30分に1回(runinterval=1800)、puppetmasterdにマニフェストをリクエストし、自分のコンピュータ内でマニフェストと異なっている所をチェックして補正するようになる。
**マニフェストの例
***File
***Service
***Package
#right(){Last Update &date()}
*Puppet
Linuxのシステム管理ツール。
多数のLinuxを管理者の定義した管理ポリシー(manifest)に従わせることができ、
まさに操り人形。
ファイルの配布、サービスの起動/停止、パッケージのインスト、等々を集中管理。
Cfengineの後継と目されていて、柔軟なmanifestの定義が魅力。
Rubyで作られている。
最新は0.24系。
**リンク
-[[本家サイト>http://reductivelabs.com/trac/puppet]]:
-[[puppet wiki (パペウィキ)>http://trac.mizzy.org/puppet]]:本家のドキュメントを日本語化している
-[[オープンソースなシステム自動管理ツール Puppet>http://gihyo.jp/admin/serial/01/puppet]]:全18回の技術評論社のWEB記事
-[[Puppetを導入してみました>http://blog.nicetrip.org/ruby/puppet%E3%82%92%E5%B0%8E%E5%85%A5%E3%81%97%E3%81%A6%E3%81%BF%E3%81%BE%E3%81%97%E3%81%9F]]:
-[[Puppet の競合 Chef のファーストインプレッション>http://trac.mizzy.org/public/wiki/ChefFirstImpression]]:Chefは手間が掛かりそう
-[[ネットワーク上でのシステム管理を容易にするPuppet>http://www.itmedia.co.jp/enterprise/articles/0808/25/news014.html]]:ITmediaの記事
-[[だ!日記 - ロンドンより>http://www.madoro.org/nikki/tag/puppet]]
-[[システム自動管理ツールPuppetを使ってみた>http://labs.unoh.net/2008/02/puppet.html]]
-[[ネットワーク上でのシステム管理を容易にするPuppet>http://sourceforge.jp/magazine/08/08/21/0210246]]
-[[Puppet使い始めました>http://l-w-i.net/m/20080504_01.txt]]
-[[Puppetって?>http://projects.tsuntsun.net/~nabeken/Puppet.html]]
-[[Hideki's Blog 2nd>http://zephel.com/archives/linuxunix/puppet/]]
-[[Puppet(システム自動設定ツール)の導入を考える>http://kurusugawa.jp/blog/archives/category/puppet]]
-[[Lucie EC2 の Puppet 設定を置くためのリポジトリ>http://github.com/yasuhito/ec2-puppet/tree/master]]
**書籍
-[[Pulling Strings with Puppet>http://www.amazon.com/dp/1590599780]]
**ダウンロード
-[[EPELのRHEL5(i386)用RPM>http://download.fedora.redhat.com/pub/epel/5/i386/]]:puppet、puppet-server、facterをDLできる
&ref(http://ecx.images-amazon.com/images/I/51f9DjcytaL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU01_.jpg)
**注意点
-RedHat EL5.2標準でインストールされる[[ruby-1.8.5はメモリリークするらしい>https://reductivelabs.com/trac/puppet/wiki/PuppetRedHatCentos]]。&br()ruby-1.8.6以上を使うのが良いらしい。
-0.24.5でpuppetrunを実行すると"Failed to load ruby LDAP library."のエラーになる。&br()最新版で修正されているかは未確認。
**サーバー側のインストールと設定
環境はRedHat EL5.2 Server(x86)のCDから構築した。
yumレポジトリが適切に設定されていてfacterもインストールできるようになっていれば、
% yum install puppet-server
でインストールは完了する。
インストール後、
#highlight(shell,linenumber){
puppetmasterd.confにautosign=trueと追記
% touch /etc/puppet/manifests/site.pp →とりあえず空のマニフェストを作っておく
% puppetmasterd --mkusers
% chkconfig puppetmaster on
% service puppetmaster start}
としてpuppetmasterdを起動する。
***サーバー側のファイルサーバー設定
puppetでファイルを配布させることができる。
例えば、/root/puppetfiles/ディレクトリを配布ファイルの置き場所とする。
/etc/puppet/fileserver.confを以下のように設定すると、
#highlight(shell){
[files]
path = /root/puppetfiles
allow = *.test.com}
puppet://puppet-server/files/ で /root/puppetfiles/ がアクセスできるようになる。
**クライアント側のインストールと設定
環境はRedHat EL5.2 Client(x86)のCDから構築した。
yumレポジトリが適切に設定されていてfacterもインストールできるようになっていれば、
% yum install puppet
でインストールは完了する。
インストール後、
#highlight(shell,linenumber){
puppetd.confにserver=puppetmasterdのサーバーを追記
% chkconfig puppet on
% service puppet start}
とする。
すると、puppetdはpuppetmasterdに証明書(CA)のサインを要求しにいく。
サーバー側のpuppetmasterdはautosign設定になっているのでクライアントの証明書にサインする。
以後、puppetdは30分に1回(runinterval=1800)、puppetmasterdにマニフェストをリクエストし、自分のコンピュータ内でマニフェストと異なっている所をチェックして補正するようになる。
**マニフェストの例
実例を交えてマニフェストの設定例。
***File
/root以下に例えばreadme.txtファイルを配布しておきたい、という場合。
#highlight(shell){{
file { "/root/readme.txt":
owner => "root",
group => "root",
mode => 440,
source => "puppet://puppet-server/files/root/readme.txt",
} }}
ユーザーが配布されたreadme.txtを書き換えたり、削除したりしても、puppetが復活させてくれる。
***Service
dhcpサービスは勝手に立ち上げられてると困るので止めさせたい、という場合。
#highlight(shell){{
service { "dhcpd":
name => "dhcpd",
enable => false,
ensure => false,
} }}
ユーザーがservice dhcpd startしたら停止させられるし、
chkconfig dhcpd onしたらoffにさせられる。
***Package
必ずインストールしておいて欲しいパッケージ(仮にパッケージ名はxyzとする)がある場合。
#highlight(shell){{
package { "xyz":
name => "xyz",
ensure => installed,
} }}
但し、yumで参照できるレポジトリにxyzのrpmが存在すること。
***FileとServiceとPackageの組み合わせ
-xyzパッケージを必ずインストールさせたい
-xyzパッケージはサービスとして動くので必ずサービス起動させておきたい
-xyzサービスの設定ファイル/etc/xyz/xyz.confは同じものを皆に配布したい
-/etc/xyz/xyz.confを変更したらサービスを再起動させたい
#highlight(shell){{
package { "xyz":
name => "xyz",
ensure => installed,
}
file { "/etc/xyz/xyz.conf":
owner => "root",
group => "root",
mode => 600,
source => "puppet://puppet-server/files/etc/xyz/xyz.conf",
notify => Service["xyz"],
require => Package["xyz"]
}
service { "xyz":
name => "xyz",
enable => true,
ensure => true,
require => File["/etc/xyz/xyz.conf"]
} }}