/etc/ファイル群の編集を簡単化するAugeasLinux Hacks(1/2 ページ)

設定ファイルの記述内容を自動で解読するAugeasの登場により、/etc/ファイル群に代表される設定ファイルのアップデート時に独自のスクリプトを構築するという負担は大幅に軽減できる。

» 2008年06月17日 11時11分 公開
[Ben-Martin,Open Tech Press]
SourceForge.JP Magazine

 複雑な構成の設定ファイル群に新たな変更を施す場合、awkを用いてファイル中の要変更カ所を特定して臨機応変的な対処をするという自作スクリプトの活躍した時代は、今や終息に近づいているのかもしれない。それというのも、設定ファイルの記述内容を自動で解読するAugeasというツールの登場により、人間は本来の目的である設定内容の変更だけに集中できるようになりつつあるからである。例えば仮に、何らかの設定ファイルにおける特定情報の記述位置が4列目に移動されていたとしても、Augeasを使えば該当する設定情報は以前と同様に提示されるため、そうした内部的な変更をユーザーがいちいち気にする必要はなくなるのだ。

 Augeasを用いた設定ファイル群の編集はコマンドラインから直接実行できるが、あるいはこうした機能をネイティブのC APIおよび、Python、Ruby、OCamlのバインディングを用いてそのほかのプログラムに組み込むことも可能になっている。Augeasの入手法に関しては、Fedora 9の標準リポジトリに収録されているほか、openSUSE 10.3では1-Clickインストールができるようになっているが、現状でUbuntu用のパッケージは用意されていない。わたしの場合は、64ビット版Fedora 8マシン上で「./configure; make; sudo make install」という通常のインストール手順にてソースコードからコンパイルしたAugeasバージョン0.1.1を使用している。

 なお前記の./configureを実行してから(READMEに示してあるように)Augeasをセットアップしても最初はうまく行かないはずで、それは設定ファイル群の認識にAugeasが使用するファイル群は/usr/localにインストールされているのに、実際には/usrを検索するためだ。こうした設定ファイルの認識法を規定しているのはレンズ(lens)と呼ばれているファイル群であり、ここではこれらlensファイル群についてもう少し説明することにしよう。先の通常インストールにて発生する問題を解決するには、後記に示したようにAUGEAS_LENS_LIBに正しいパスをエクスポートすればいい。ここではまず後記の実行例における1つ目のlsコマンドにて、ファイルディレクトリが何も出力されていない点に注目して頂きたい。

$ augtool

augtool> ls

Not enough arguments for ls

augtool> ls /

augeas/ = (none)

augtool>

$ export AUGEAS_LENS_LIB=/usr/local/share/augeas/lenses

$ augtool

augtool> ls /

augeas/ = (none)

files/ = (none)


 Augeasの認識した設定ファイル群の表示は、一種の仮想的なファイルシステムを2つ介して行われるようになっている。つまり/filesのパスでは設定ファイル群、そして/augeasではメタデータが表示されるのであり、例えば/etc/hostsのファイル群はAugeasにおいて /files/etc/hostsという扱いにされる。

 Augeasでサポートされているのは、aliases、aptsources、fstab、grub、hosts、ifcfg、 inittab、pam、sshd、sysconfig、xinetd、yumの設定ファイルフォーマットである。そのほかの独自フォーマットの設定ファイルをAugeasで編集したい場合は、lensと呼ばれる機構を利用しなければならない。既にテキスト構文解析およびExtended Backus-Naur Form(EBNF)についての知識を有すユーザーであれば、各自の設定ファイルに応じたAugeas用のlensファイルを作成するのはそれほど難しくないはずだが、EBNFに詳しくないユーザーがlensファイルを作成するには、テキストの構文解析(parsing)と形式文法(formal grammar)に関する何らかの入門書に目を通しておかなくてはならないだろう。こうした標準的なEBNFの定義法とAugeas用lensの記述法を比べた場合、両者の間に存在する基本的な相違点の1つは、lensの用途は特定のテキストファイルを抽象構文木(abstract syntax tree)に変換する構文解析だけでなく、そうして取得した構文木からプレインテキストファイルへの再変換という双方向の処理に使用するという点である。

 これはAugeasのダウンロードページにも記載されている注意事項だが、現行のAugeasはいまだ試作段階であるため、ここで編集した設定ファイルが損傷する可能性を想定しておかなくてはならない。そのためコマンドラインツールには、こうした事態に備えた“バックアップ”オプション、つまり変更を加える設定ファイルを別途保管しておく機能が用意されているのである。またこの機能を用いると“/”以外をシステムルートディレクトリとした状態でAugeasを実行させることもできる。この機能を使うと、例えば/tmp/augeas-root/etc/hostsなどの指定で各自の設定ファイルを一般ユーザーの権限にてコピーしておき、このファイルに施した変更に問題がないかを一通りチェックしてから、変更後のファイルをあらためて/etc/hostsにコピーし直すという処理ができる。

関連キーワード

Linux Hacks | Linux | 運用管理


       1|2 次のページへ

Copyright © 2010 OSDN Corporation, All Rights Reserved.

注目のテーマ