技術ブログ
弊社では Oracle VM Server for x86 上に多数のVMを作成して、主にOracle Database関連製品のサポート業務向けとなる検証環境を構築しています。2011年ごろからコツコツVMを追加してきた結果、現時点では100近い製品導入済みのVMがホストされるまでになっています。
Oracle Databaseはバージョンアップを続けて行くでしょうから、今後もVMを追加してゆくことになるでしょう。また、嬉しいことに、Oracle Database以外の製品に関するサポートの引き合いを弊社がいただくことも増えてきており、Oracle Database以外の製品に対応するためにも、やっぱり今後 VMを多数作成してゆくことになりそうです 🙂
弊社ビジネスが継続し、成長してゆくことはまったくもって良いことなのですが、毎度毎度VMを手作業で作成するは面倒ですし、私がVM作成に割ける時間も有限です。ということで、最近話題のプロビジョニングツール Ansibleを使ってLinux系VMの作成を自動化することにしました。
VM作成手順の概要は以下の通りです。
これまで、Ansible, Chef, Puppetなどのプロビジョニングツールを使ったことはなかったのですが、Ansibleは非常に簡単に使いこなすことができました。適用領域次第の部分があるかとは思いますが、一度に多くて数台(Oracle RACクラスタ等)を構成する程度であれば、完全にフィットするはずです。
Ansibleで気に入っている点を書いておきます。
クライアント(ここでは構成しようとするVM)に求められる要件が少ない → pythonの一部モジュール、ssh接続程度
ホスト固有パラメータ、グループ固有パラメータを host_vars/[ホスト名]、group_vars/[グループ名] というファイルで簡単に定義できる。
[root@ol65n5 post]# cat hosts [l59sdbx] l59sdbx1 ansible_ssh_host=xxx.xxx.xxx.222 l59sdbx2 ansible_ssh_host=xxx.xxx.xxx.223
[root@ol65n5 post]# cat host_vars/l59sdbx1 vmid: 222 distribution_major_version: 5 processor_architecture: x86_64 ora_node_no: 1
[root@ol65n5 post]# cat group_vars/l59sdbx template: false ora_rac_group: l59sdbx ora_db_name: b204ru ora_db_domain: .world ora_password: oracle ora_db_charset: AL32UTF8 :
ホスト固有パラメータ、グループ固有パラメータをテンプレートで簡単に参照して 展開できる。
[root@ol65n5 post]# cat templates/ifcfg-eth0.j2 DEVICE=eth0 BOOTPROTO=static ONBOOT=yes USERCTL=no IPADDR=172.31.{{vmid}}.1 HWADDR=xx:xx:xx:00:{{ "%X"|format(vmid) }}:00 NETMASK=255.255.0.0
使ってみての実感ですが、プロビジョニングツールを使って、構成が異なる 多数の環境を効率的に構築するためは、構成のベース部分のテンプレート化(標準)が必要になりますね。 環境ごとにあまりにも構成が異なると、それぞれの構成に合わせてプロビジョニング定義を書く必要がでてきて、あまり省力化につながりません。
たとえば、弊社検証環境ではNICおよびセグメントの構成を以下の構成でそろえています。
eth0 : 172.31.[VM識別子].1/16 xx:xx:xx:00:[VM識別子]:00 eth1 : 172.30.[VM識別子].1/16 xx:xx:xx:00:[VM識別子]:01 eth2 : 172.29.[VM識別子].1/16 xx:xx:xx:00:[VM識別子]:02 eth3 : 172.28.[VM識別子].1/16 xx:xx:xx:00:[VM識別子]:03 eth4 : xxx.xxx.xxx.[VM識別子]/24 → DHCPで固定IPアドレスを割り当て、社内LANに接続 xx:xx:xx:00:[VM識別子]:04
そろえることで、プロビジョニング定義を共通化できます。逆に言うと、そろえたとしても、それぞれのVMの用途に併せた設定ができる余地があるような、構成にしておく必要があります。
細かいところではありますが、上記の構成は以下の点を気にしています。
その他、いくつかノウハウが見えてきたので、メモ書きレベルですがまとめておきます。
あとはWindows VMの導入効率化を検討したいですが・・・ いつ着手できることやら。