よかろうもん!

アプリからインフラまで幅広くこなすいまどきのクラウドエンジニアが記す技術ブログ

OpenLDAPで変数を定義可能に

今まではホスト名などを条件にmanifestファイル内で変数の割り当てなどをすることで、ホスト毎で異なる変数を割り当てていたかもしれませんが、puppetのバージョン0.24.7より、OpenLDAPで変数を定義することが可能になりました。それに伴い、schemaファイルも変更となっています。

# 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 )

attributetype ( 1.1.3.11 NAME 'environment'
	DESC 'Puppet Node Environment'
	EQUALITY caseIgnoreIA5Match
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

attributetype ( 1.1.3.12 NAME 'puppetvar'
	DESC 'A variable setting for puppet'
	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 $ environment $ puppetvar ))

※Ubuntuでpuppetをインストールしている場合、/var/lib/gems/1.8/gems/puppet-0.24.7/ext/ldap/puppet.schema にschemaファイルが保存されています。

puppetvar属性に変数と値を設定できるようになったため、ホスト毎に異なった値を設定したい場合は、この機能を利用することで簡単に実装できますね。
例えば、ほぼすべてのホストでAアプリケーションとBアプリケーションを動かすが、特定のホストだけはAアプリケーションのみしか稼働させないというような設定をする必要がある場合に、puppetvar機能を利用するといとも簡単に実装できちゃいますね。