今回は、複数の仮想マシンからなる環境の自動構築に挑戦します。複数の仮想マシンをまとめて構築した上で、これらを連携させる設定処理を実施してみましょう。

 ここでは、具体例として、「GlusterFS」による分散ファイルシステムを構築します。GlsuterFSは、複数のサーバーのローカルディスクを結合し、仮想的に1つのボリュームを構成する機能を提供します。詳細については、「GlusterFS技術情報」が参考になるでしょう。

構築環境の全体像

 図1のように、「vda」と「vdb」の2個の仮想ディスクを接続した、4台の仮想マシンを構成することを目指します。それぞれ、「vda」にはRHEL6.4とGlusterFSをインストールして、「vdb」は空のファイルシステムとして、「/data」にマウントします。それぞれの「vdb」は4GBのサイズで用意しておき、GlusterFSでこれらを結合することで、16GBのボリューム「vol01」を作成します。

図1●GlusterFSを構成する仮想マシン
図1●GlusterFSを構成する仮想マシン
[画像のクリックで拡大表示]

 RHEL6.4とGlusterFSがインストールされた、4台の仮想マシンを準備する作業は、前回と同様に、virt-constructからKickStartとPuppetを連携させることで実現が可能です。4台の仮想マシンの準備ができたら、代表となる1台として「gluster01」から次のコマンドを実行します。

# gluster peer probe gluster02 
# gluster peer probe gluster03 
# gluster peer probe gluster04 
# gluster vol create vol01 \ 
    gluster01:/data/brick01 \ 
    gluster02:/data/brick01 \ 
    gluster03:/data/brick01 \ 
    gluster04:/data/brick01 
# gluster vol start vol01 
このマークで改行
(「\」は、コマンドの途中で改行する際に入力する記号)

 これにより、4台の仮想マシンそれぞれのディレクトリー「/data/brick01」を結合したボリューム「vol01」が作成されます。ただし、この最後のコマンドの実行は、Puppetで実施するのは少し困難です。Puppetは、あくまで、1台のサーバーの構成を実施するためのツールですので、「他の3台の構成が終わったことを確認してからコマンドを実行する」ということができません。

 もちろん、Puppetのリソースを拡張して、そのための機能を追加することは可能ですが、あまり複雑になりすぎるのも考え物です。ここでは、複数の仮想マシンを連携する部分は、シンプルにシェルスクリプトで実装することにします。つまり、1つのシェルスクリプトで、次の処理をまとめて実行しようというわけです。

  • virt-constructで4台の仮想マシンを作成して、GlusterFSを導入する
  • 4台の仮想マシンすべての構築が完了して、ログイン可能になるまで待つ
  • gluster01で前述のボリューム作成コマンドを実行する