概要
Oracle製品をインストールする時にインストール・ウィザードを立ち上げて構成を決めながらインストールするのもよいですが、次のような場合は冗長な作業に思う事がないでしょうか
- 構成を予め決めている環境を作成する場合
- 同一の環境を複数作成する場合
- GUIがない状況で環境を作成する場合
そのような時には、サイレント・インストールが利用できます。
そのサイレント・インストールを実行するには、**Inventory Pointer Location File (oraInst.loc)**を事前に作成しておく必要があります。
このInventory Pointer Location Fileの作成をChefを利用して行ってみます。
Inventory Pointer Location File
Oracle製品のインストーラは、インベントリ・ディレクトリを利用して、システムにインストールしているOracle製品をトラッキングを行います。
このインベントリ・ディレクトリの情報を格納しているファイルが**Inventory Pointer Location File (oraInst.loc)**です。
oraInst.locファイルの内容
oraInst.locファイルに含まれる情報は非常にシンプルで次の2行だけです。
inventory_loc=インベントリ・ディレクトリのフルパス
inst_group=書き込み権限を持つグループ名
Chefを使ってやりたい事
Chefを使ってoraInst.locファイルに設定するインベントリ・ディレクトリやグループ名をパラメータ化して生成できるようにします。
今回作成するRecipe
- oraInst.locファイルの作成
- インベントリ・ディレクトリ及びインストール・グループ名のパラメータ化
Recipe. oraInst.locファイルの作成
以下の3種類のoraInst.locファイルで作成します。
- Recipe
- Template
- Attribute
TemplateでoraInstの骨子を作り、Attributeでデフォルトパラメータを定義し、Recipeでパラメータを利用してoraInst.locファイルを生成・配置します。
- Template
inventory_loc=<%= @inventory_location %>
inst_group=<%= @inventory_group %>
inventory_locationシンボルとinventory_groupシンボルで定義されているハッシュ値をそれぞれ取得して設定しています。
- Attribute
default['inventory']['group'] = 'oinstall'
default['inventory']['owner'] = 'oracle'
default['inventory']['oraInst'] = '/root/oraInst.loc'
default['inventory']['location'] = '/u01/app/oraInventory'
パラメータのデフォルト値を設定しています。
- Recipe
directory node['inventory']['location'] do
owner node['inventory']['owner']
group node['inventory']['group']
recursive true
mode 0775
end
template node['inventory']['oraInst'] do
source 'oraInst.loc.erb'
owner node['inventory']['owner']
group node['inventory']['group']
mode '0644'
variables(
inventory_location: node['inventory']['location'],
inventory_group: node['inventory']['group']
)
end
templateリソースを利用してoraInst.loc.erbを配置し、オーナー及びパーミッション設定を行います。
まとめ
サイレント・インストールを行う際には必須になるので、Oracle製品環境を作るときには実行しておくとよいかもしれないですね。
実際に各製品のサイレント・インストールを行うには、oraInst.locに加えて各製品のレスポンス・ファイルが必要になります。
-今回のレシピ:https://github.com/shinyay/chef-oracle-inventory/blob/publish_20160607