先日唐突に 「最新の openSUSE を触ってみるか」 と思い付いて、07/15 にリリースされたばかりの openSUSE 11.3 を VirtualBox 上でインストールしてみた。openSUSE はまだ名称が SUSE Linux だった時代に、我が家の自宅サーバー環境のメインとして採用していた思い入れのあるディストリビューションで、個人的には (runlevel 3 の) コンソールの背景に画像が表示される半透明風の表現がお気に入り。この表現はいつから始まったか知らないが、SUSE Linux 9.x では既に導入されていて、当時は SSH 経由でログインしたときにこの画面で操作できないことを、残念に思ったものだ。


runlevel 3 のコンソール

さて、その openSUSE 11.3 マシンをサーバー管理自動化ツール Puppet の管理下に置こうとしたところ、Facter 変数 lsbmajdistrelease を参照できなかった。lsbmajdistrelease は、例えば CentOS の 3.x では "3"、4.x では "4"、5.x では "5" のようにディストリビューションのメジャー・バージョンが格納される変数で、我が家の Puppet でマニフェストの条件分岐の要として活用しているため、使えないと具合が悪い。

まず以下のパッケージが存在しなければ、YaST でインストールする。

  • facter
  • lsb
  • lsb-release

しかしこれら (と依存関係にある全て) のパッケージがインストールされた状態で

$ facter

と実行しても、変数 lsbmajdistrelease が表示されない。そこで /usr/lib/ruby/vendor_ruby/1.8/facter/lsbmajdistrelease.rb (CentOS では /usr/lib/ruby/site_ruby/1.8/facter/lsbmajdistrelease.rb) を開き、6行目を次のように編集する。

・編集前
confine :operatingsystem => %w{Solaris Linux Fedora RedHat CentOS SuSE SLES Debian Ubuntu Gentoo OEL OVS}

・編集後
confine :operatingsystem => %w{Solaris Linux Fedora RedHat CentOS SuSE OpenSUSE SLES Debian Ubuntu Gentoo OEL OVS}

意外と単純な仕組みで、要は Facter 変数 operatingsystem が吐く文字列 (大文字・小文字は無視) がリストの中に定義されていないと、いくら環境が整っていても変数 lsbmajdistrelease が返されないのだが、こう言う仕様になっている意図は不明だ。変数 operatingsystem は openSUSE 11.3 では

$ facter operatingsystem
OpenSUSE

となるので、この "OpenSUSE" をリストに加えると、次のように変数 lsbmajdistrelease を取得できるようになる。

$ facter lsbmajdistrelease
11

Facter 変数の準備ができれば、あとは Puppet をインストールするだけだが、openSUSE 11.3 のリポジトリにある Puppet は 0.25.4 で、我が家の Puppet サーバー (CentOS 5.5 上の 0.22.4) と比べて新しすぎる。Puppet サーバーとクライアントのバージョンが違うと具合が悪いのは Debian で体験済みなので、クライアント側のバージョンをサーバーに合わせる必要がある。僕は puppet-0.22.4 のソースから RPM をビルドしたが、その手順はまた改めて。

最後に、エントリー冒頭のコンソール画面の件で一言。背景画像は変に色を付けず、例えばこんな感じ (↓) で、かつての SUSE Linux 時代のように無彩色で明度を落とした方が視認性が高く、カッコいいと思うんだが・・・。


スクリーン・ショットをレタッチ

Comments are closed.