2009年1月 4日
puppetrun で操作
クライアント側 を puppetd で動作させていると30分に1回 サーバーにアクセス行く仕様のため
台数が多くなるとまずいらしい。
意図した操作を行いたい場合に、puppetrun で操作を行うことで、運用を楽にします。
クライアント側
/etc/puppet/namespaceauth.conf
[puppetrunner]
allow centos1.zephel.com
allow 192.168.2.200
puppetd --listen --no-clien --server centos1.zephel.com --verbose &
サーバー側
/etc/puppet/fileserver.conf #ファイルの置き場所(下記で任意に設定)
[module]
path /etc/puppet/files
allow *.zephel.com
allow 192.168.2.0/24
/etc/init.d/puppetmasterd start
puppetrun --host centos2.zephel.com --host centos4.zephel.com # 操作で反映
puppetrun --host hostA --host hostB とする。
下記の場合は LDAP での管理が必要。
puppetrun -all
puppetrun --class web
同じ設定をしているサーバー群がある場合は、LDAP で管理したほうが良いようです。
マニュフェストの設定
/etc/puppet/manifests/site.pp
import copy.pp #でインポートできる
resolv.conf を配布する設定
/etc/puppet/manifests/copy.pp
node 'centos2.zephel.com' {
file { '/etc/resolv.conf':
mode => 644,
owner => 'root',
group => 'root',
source => 'puppet://centos1.zephel.com/module/resolv.conf',
}
}
node 'centos4.zephel.com' {
file { '/etc/resolv.conf':
mode => 644,
owner => 'root',
group => root,
source => 'puppet://centos1.zephel.com/module/resolv.conf',
}
}
上と同じことを省略して書くと
node 'centos2.zephel.com' {
file { '/etc/resolv.conf':
mode => 644,
owner => 'root',
group => root,
source => 'puppet://centos1.zephel.com/module/resolv.conf',
}
}
node 'centos4.zephel.com' inherits centos2.zephel.com {}
→ 1つ目の設定を継承して利用できます。
node 'centos2.zephel.com' {
file { '/etc/resolv.conf':
mode => 644,
owner => 'root',
group => root,
source => 'puppet://centos1.zephel.com/module/resolv.conf',
}
}
node default {
file { '/etc/resolv.conf':
mode => 644,
owner => 'root',
group => 'root',
source => 'puppet://centos1.zephel.com/module/resolv.conf',
}
}
→ centos2.zephel.com 以外は、default で設定する。
node default {
file { '/etc/resolv.conf':
mode => 644,
owner => 'root',
group => 'root',
source => 'puppet://centos1.zephel.com/module/resolv.conf',
}
}
→ 全部同じ設定であれば、default のみでよい。
投稿者 hideki : 17:22 | コメント (0) | トラックバック
2009年1月 2日
puppet のインストール
puppet のインストールメモ
サーバーとクライアントが動くまで。
対象
→鯖の台数が多くて、同じ設定をたくさんしないといけない人。
→台数多くて設定してると眠くなる人。
→何回もパスワード間違えて疲れる人。
人形遣いになりたい人は覚えましょう(´・ω・`)
オープンソースなシステム自動管理ツール Puppet
パペウィキ
centos5.x でやりました。
yum に追加
/etc/yum.repos.d/dag.repo を追加(puppet をインストール)
[dag]
name=DAG RPM Repository
baseurl=http://ftp.riken.jp/Linux/dag/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
gpgkey=http://ftp.riken.go.jp/pub/Linux/dag/RPM-GPG-KEY.dag.txt
puppet のインストール
# yum install puppet puppet-server #puppet (クライアント、サーバー)のインストール
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
dag 100% |=========================| 1.1 kB 00:00
primary.xml.gz 100% |=========================| 2.9 MB 00:02
dag : ################################################## 8223/8223
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package puppet.i386 0:0.22.4-1.el5.rf set to be updated
--> Processing Dependency: /usr/bin/ruby for package: puppet
--> Processing Dependency: facter >= 1.1.4 for package: puppet
--> Processing Dependency: ruby >= 1.8.1 for package: puppet
---> Package puppet-server.i386 0:0.22.4-1.el5.rf set to be updated
--> Running transaction check
---> Package ruby.i386 0:1.8.5-5.el5_2.6 set to be updated
--> Processing Dependency: libruby.so.1.8 for package: ruby
--> Processing Dependency: ruby-libs = 1.8.5-5.el5_2.6 for package: ruby
---> Package facter.i386 0:1.3.7-1.el5.rf set to be updated
--> Running transaction check
---> Package ruby-libs.i386 0:1.8.5-5.el5_2.6 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
puppet-server i386 0.22.4-1.el5.rf dag 13 k
Installing for dependencies:
facter i386 1.3.7-1.el5.rf dag 22 k
puppet i386 0.22.4-1.el5.rf dag 382 k
ruby i386 1.8.5-5.el5_2.6 updates 280 k
ruby-libs i386 1.8.5-5.el5_2.6 updates 1.6 M
Transaction Summary
=============================================================================
Install 5 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 2.3 M
Is this ok [y/N]: y
Downloading Packages:
(1/5): puppet-server-0.22 100% |=========================| 13 kB 00:00
(2/5): puppet-0.22.4-1.el 100% |=========================| 382 kB 00:00
(3/5): facter-1.3.7-1.el5 100% |=========================| 22 kB 00:00
(4/5): ruby-libs-1.8.5-5. 100% |=========================| 1.6 MB 00:02
(5/5): ruby-1.8.5-5.el5_2 100% |=========================| 280 kB 00:00
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
Importing GPG key 0x6B8D79E6 "Dag Wieers (Dag Apt Repository v1.0)
Is this ok [y/N]: y
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: ruby-libs ######################### [1/5]
Installing: ruby ######################### [2/5]
Installing: facter ######################### [3/5]
Installing: puppet ######################### [4/5]
Installing: puppet-server ######################### [5/5]
Installed: puppet-server.i386 0:0.22.4-1.el5.rf
Dependency Installed: facter.i386 0:1.3.7-1.el5.rf puppet.i386 0:0.22.4-1.el5.rf ruby.i386 0:1.8.5-5.el5_2.6 ruby-libs.i386 0:1.8.5-5.el5_2.6
Complete!
ruby と facter がインストールされます。puppet は ruby 上で動くため必須のようです。
facter は os のバージョン、ドメイン名、FQDN、IPアドレスなどを収集するための Ruby ライブラリだそうです。
クライアントだけインストールの場合は
# yum install puppet
puppet, ruby, ruby-libs, facter の4つがインストールになります。
初期設定
iptables を停止するかポートを空ける。(デフォルト 8140)
dns を動かさないで、hosts で動かすなら、下のやつで設定する。
/etc/sysconfig/puppet で鯖、ポート番号の変更ができる。
PUPPET_SERVER=centos1.zephel.com ←puppet 鯖
#PUPPET_PORT=8140 ←ポート変えるなら
設定してみたが、dns を停止したら、
err: Invalid node name *.zephel.com at /etc/puppet/manifests/site.pp:7
err: Could not find centos2.zephel.com with names centos2.zephel.com, centos2
err: Could not find centos4.zephel.com with names centos4.zephel.com, centos4
と出てたのでだめぽい。
/etc/puppet/manifests/site.ppを作成
touch site.pp でもかまわない。
file { '/etc/hosts':
owner => 'root',
group => 'root',
mode => 644,
}
鯖側 1回目起動(puppet ユーザの作成)
# puppetmasterd --verbose --mkusers
2回目からは下記で起動。
# puppetmasterd --verbose &
登録していない場合と全クライアント --nonodesオプションで起動。(はじめはこっちで確認)
# puppetmasterd --nonodes --verbose &
node (クライアント)の指定がある場合は
/site.pp
node 'centos2.zephel.com' {
file { '/etc/hosts':
owner => 'root',
group => 'root',
mode => 644,
}
}
# puppetmasterd --verbose &
で起動。
クライアントの起動
# puppetd --server centos1.zephel.com --verbose
接続後の確認
鯖側で
notice: Allowing unauthenticated client centos2.zephel.com(192.168.2.201) access to puppetca.getcert
info: Autosign is enabled but /etc/puppet/autosign.conf is missing
notice: Host centos2.zephel.com has a waiting certificate request
# puppetca --list
centos2.zephel.com ←登録されていないクライアント
# puppetca --sign centos2.zephel.com
# puppetca --list
No certificates to sign ←登録されるとクライアントの表示が無くなる。
※autosign.conf を記載すれば、認証の作業がいらなくなる。
/etc/puppet/autosign.conf
*.zephel.com
クライアント側で /etc/hosts をchmod 600 にして、puppetd を起動。
# puppetd --server centos1.zephel.com --verbose
[root@centos2 etc]# puppetd --server centos1.zephel.com --verbose
notice: Starting Puppet client version 0.22.4
info: Facts have changed; recompiling
info: Caching configuration at /var/lib/puppet/localconfig.yaml
notice: Starting configuration run
notice: //centos2.zephel.com/File[/etc/hosts]/mode: mode changed '600' to '644'
notice: Finished configuration run in 0.08 seconds
600に書き換わっていたので、644 に書き変わる。