オープンソースなシステム自動管理ツール Puppet
第9回 Puppet実践テクニック(その4)
前回に引き続き,
LDAPによるノード管理
最近のソフトウェアは,
LDAPを利用しない場合には,
また,
LDAPを利用するもうひとつの重要なポイントとしては,
以下では,
Ruby/LDAPライブラリのインストール
LDAPでのノード管理には,
LDAPスキーマの設定
Puppetの配布tarballには,
# These OIDs are all fake. No guarantees there won't be conflicts.
#
# $Id$
attributetype ( 1.1.3.10 NAME 'puppetclass'
DESC 'Puppet Node Class'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
attributetype ( 1.1.3.9 NAME 'parentnode'
DESC 'Puppet Parent Node'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
objectclass ( 1.1.1.2 NAME 'puppetClient' SUP top AUXILIARY
DESC 'Puppet Client objectclass'
MAY ( puppetclass $ parentnode ))
OpenLDAPでノード管理を行うためには,
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/puppet.schema
ノード情報をLDAPサーバに登録
ノード情報をLDAPサーバに登録するためには、以下のようなLDIFファイルを作成し,
dn: cn=basenode, ou=hosts, o=southpark
objectclass: top
objectclass: device
objectclass: puppetClient
cn: basenode
puppetclass: base
dn: cn=client.example.org, ou=hosts, o=southpark
objectClass: top
objectClass: device
objectClass: ipHost
objectClass: puppetClient
cn: client.example.org
ipHostNumber: 192.168.10.3
parentnode: basenode
puppetclass: web
puppetClientオブジェクトクラスは必ず指定してください。parentnode属性は,
上記のLDIFで記述されたノード情報と等価なものをマニフェストで表すと,
node basenode {
include base
}
node 'client.example.org' inherits basenode {
include web
}
Puppetサーバ側の設定
puppetmasterdがLDAPサーバを参照するために必要な設定を、以下のようにpuppet.
[puppetmasterd]
ldapnodes = true
ldapserver = ldap.example.org
ldapbase = ou=hosts, o=southpark
ldapstring = (&(objectclass=puppetClient)(cn=%s))
ldapnodesをtrueに設定することで,
puppetd/puppetmasterdの実行
あとは通常通り,
第2回 Puppet セミナーのご案内
第2回 Puppet セミナーが12/