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機能を利用するといとも簡単に実装できちゃいますね。