LoginSignup
2
1

More than 5 years have passed since last update.

Chefを使ってSwap領域を作成してみた

Posted at

概要

Chefを使ってWebLogic Server環境の作成を自動で行う事ができるようになりました。

さて、WebLogic Server環境、つまりアプリケーションサーバ環境は自動構成できるようになったのですが、データベースがなくては作成できるアプリケーションに大きな制約が発生します。
そこで、データベースとしてOracle Database 12cR1をインストールしていきます。

ところでデータベースの導入については、事前に行っておく前提作業があります。一部Chefを使ってOracle製品をインストールするための環境を準備してみたでも記載をしていますが、そこで触れていなかったSwap領域の作成を今回は行います。

OS導入時にSwap領域を適切に構成していれば特に問題はないですが、既存環境にOracle Databaseを導入しようとした時にSwap領域不測で警告が発生する事があります。
そのような時のためにChefでSwap領域を用意するRecipeを作成してみます。

Oracle Databaseのインストール前提作業

Oracle Databaseのインストール前提作業は、インストールマニュアルの以下の箇所に記載があります。

スワップ領域の前提条件

スワップ領域は、使用する環境のRAMの量に応じて以下の要件となります。

RAM スワップ領域
1GB - 2GB RAMサイズの1.5倍
2GB - 16GB RAMサイズと同じ
16GB - 16GB

Swap領域の作成手順

Swap領域は以下の手順で作成します。

  1. Swapファイルの作成
  2. Swap領域の初期化
  3. Swap領域の有効化

1. Swapファイルの作成

ddコマンドでNULL埋めファイル(/dev/zero)をコピーして作成します。
作成したファイルには、実行属性を付与します。

$ dd if=/dev/zero of=/swapfile bs=1M count=1024
$ chmod 600 /swapfile
  • of: 作成するファイル名
  • bs: ブロックサイズ(byte)
  • count: ブロック数

2. Swap領域の初期化

mkswapコマンドでスワップ領域を作成します。

$ mkswap -f /swapfile

3. Swap領域の有効化

swaponコマンドを使って,スワップ領域を有効にします。

$ swapon /swapfile

Chefを使ってやりたい事

前述のSwap領域を作成する一連の操作、

  1. Swapファイルの作成
  2. Swap領域の初期化
  3. Swap領域の有効化

これらをChefで自動実行できるようにします。

今回作成するRecipe

  • 作成するSwap領域サイズは、Attributeで制御するようにし、デフォルトしては1GBのSwap領域を作成し有効化します。

Recipe. Swap領域の作成

以下の2種類のファイルを作成します。
- Recipe
- Attribute

## Swapファイルの作成 & 初期化

recipes/swap.rb
execute "make swapfile" do
  user 'root'
  group 'root'
  command "dd if=/dev/zero of=#{node['env']['swap']['swapfile']} bs=#{node['env']['swap']['blocksize']} count=#{node['env']['swap']['count']} && chmod 600 #{node['env']['swap']['swapfile']} && mkswap #{node['env']['swap']['swapfile']}"
end

Swap領域の有効化

recipes/swap.rb
execute "activate swap" do
  user 'root'
  group 'root'
  command "swapon -ae"
end

デフォルト値設定

attributes/default.rb
default['env']['swap']['swapfile'] = '/swapfile'
default['env']['swap']['blocksize'] = '1M'
default['env']['swap']['count'] = '1024'

まとめ

Swap領域の作成は、コマンドからも容易に作成する事ができるので、Chef化しておく必要はないかもしれないと思う方もいらっしゃるかもしれません。
Chefで実行できるようにしておく事のメリットは、次の点があると考えています。

  • 自動化
  • 冪等性
  • 属人性排除

つまり今回のようなSwap領域の作成もコマンドで簡単にできると思える方と,思えない方、誰が実施しても同じ結果がでるというところに価値があるように考えています。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1