nkjmkzk.net

powered by Kazuki Nakajima

EC2上でカスタムOracle Linux AMIを作成する・その全工程

Oracleが提供しているOracle Linux 5.5 64bit AMIにいくつかカスタマイズを行ってオリジナルAMIを作成しました。このオリジナルAMIは僕が普段から検証でよく使っている構成で、Storage GRIDを構成するためのGrid InfrastructureやOracle Databaseをスポーンとインストールすることができるミニマムな環境になります。今回はその全行程を紹介します。

ベースとなるAMI: ami-09d43a60から新しいインスタンスを作成します。また、同時にボリュームサイズをデフォルトの10Gbyteから26Gbyteに拡張しておきます。

[nkjm@mac]$ ec2-run-instances ami-09d43a60 -t t1.micro -b /dev/sda1=snap-bedb19d6:26 -k nkjmkey --ramdisk ari-25d43a4c --kernel aki-23d43a4a

インスタンスにログインします。

[nkjm@mac]$ ssh -l root -i nkjmkey.pem ec2-50-17-122-234.compute-1.amazonaws.com

ボリュームサイズ(このインスタンスではブロックデバイスのパーティションに相当)に合わせてファイルシステムを拡張します。

[root@rc1]# resize2fs /dev/sda1

タイムゾーンをJSTに合わせます。

[root@rc1]# rm /etc/localtime
[root@rc1]# cp /usr/share/zoneinfo/Japan /etc/localtime

不要なサービスを停止します。

[root@rc1]# for i in ip6tables iptables mcstrans isdn auditd restorecond portmap nfslock mdmonitor rpcidmapd rpcgssd setroubleshoot o2cb bluetooth netfs ocfs2 pcscd acpid hidd autofs oracleasm hplip cups xinetd sendmail gpm xfs rhnsd
do
    chkconfig $i off
done

不要なパッケージグループを削除してミニマム化を図ります。

[root@rc1]# yum groupremove 'Games and Entertainment' 'Graphics' 'Graphical Internet' 'Mail Server' 'Office/Productivity' 'Printing Support' 'Sound and Video'

最新のYumレポジトリ情報をインストールし、OS全体をアップデートします。また、その後恐らく何らかの依存関係でうっかり入ってしまったパッケージグループを削除します。

[root@rc1]# rm /etc/yum.repos.d/public-yum-el5.repo
[root@rc1]# wget http://public-yum.oracle.com/public-yum-el5.repo
[root@rc1]# yum update
[root@rc1]# yum groupremove 'MySQL Database' 'Mail Server'

アップデートしたカーネルを利用するためにGRUBのメニューリストを作成しておきます。

[root@rc1]# vi /boot/grub/menu.lst
default=0
timeout=3
hiddenmenu

title Oracle Linux 5.6 64bit
    root (hd0)
    kernel /boot/vmlinuz-2.6.18-238.el5xen root=/dev/sda1 console=hvc0
    initrd /boot/initrd-2.6.18-238.el5xen.img

スワップ領域用のファイルを作成し、スワップに割り当てます。これは後々Grid InfrastructureやOracle Databaseのインストール時にスワップがないと怒られるためです。(どっちみに容量が足りないといって怒られるのですがもうそれは無視します)

[root@rc1]# dd if=/dev/zero of=/var/tmp/swap.img bs=1M count=2048
[root@rc1]# mkswap /var/tmp/swap.img
[root@rc1]# swapon /var/tmp/swap.img
[root@rc1]# vi /etc/fstab
/dev/sda1                  /                       ext3    defaults        1 1
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/var/tmp/swap.img     swap     swap     defaults     0     0

udevのルールを作成します。これは後々ASM(Automatic Storage Management)に追加のEBSボリュームを認識させるためです。

[root@rc1]# vi /etc/udev/rules.d/80-oracle.rules
KERNEL=="sd*",OWNER="oracle",GROUP="oinstall",MODE="660"
KERNEL=="xvd*",OWNER="oracle",GROUP="oinstall",MODE="660"

Grid Infrastructure、Databaseをインストールするにあたり必要なパッケージをまとめてインストールしてくれるoracle-validatedをインストールします。

[root@rc1]# yum install oracle-validated

あった方が便利なソフトウェアをいくつかインストールしていきます。
まずscreen。

[root@rc1]# yum install screen

高速に圧縮/解凍を行うためのpbzip2。

[root@rc1]# yum install bzip2-devel
[root@rc1]# wget http://compression.ca/pbzip2/pbzip2-1.1.2.tar.gz
[root@rc1]# tar xvfz pbzip2-1.1.2.tar.gz
[root@rc1]# cd pbzip2-1.1.2
[root@rc1]# make && make install

sqlplusを便利にするrlwrap。

[root@rc1]# yum install readline-devel
[root@rc1]# wget http://utopia.knoware.nl/~hlub/rlwrap/rlwrap-0.37.tar.gz
[root@rc1]# tar xvfz rlwrap-0.37.tar.gz
[root@rc1]# cd rlwrap-0.37
[root@rc1]# ./configure
[root@rc1]# make && make install

viでvimを起動するためのalias設定を行います。

[root@rc1]# vi /root/.bashrc
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias vi='vim'

# Source global definitions
if [ -f /etc/bashrc ]; then
	. /etc/bashrc
fi

ログやキャッシュ、SSH鍵情報をクリーンアップしてAMIとしてリパックするための前処理を行います。

[root@rc1]# oraclevm-template --cleanup
[root@rc1]# oraclevm-template --enable
[root@rc1]# history -c

インスタンスを停止します。

[nkjm@mac]$ ec2-stop-instances i-5409fe3b

インスタンスのボリュームのスナップショットを作成します。

[nkjm@mac]$ ec2-create-snapshot -d 'Oracle Linux 5.6 64bit customized by nkjm' vol-193e7874

スナップショットからAMIを登録します。

[nkjm@mac]$ ec2-register -n 'Oracle Linux 5.6 64bit customized by nkjm' -d 'Oracle Linux optimized for Grid Infrastructure and Oracle Database' --root-device-name /dev/sda1 -b /dev/sda1=snap-cb0e4aa7 -a x86_64 --kernel aki-427d952b

AMIを公開します。(デフォルトでは非公開になっています)

[nkjm@mac]$ ec2-modify-image-attribute ami-dc07f5b5 --launch-permission -a all

そして実際にこのAMIを公開しています。

AMI ID: ami-dc07f5b5
Name:
Oracle Linux 5.6 64bit customized by nkjm
Region:
US East

特に最新のASMやDatabase等のOracleソフトウェアをこれから検証してみたいけどなかなかそういった機材がないという方、AWSのアカウントを作成してこのAMIを試してみたりしてはいかがでしょうか。AMIについてのフィードバックもいただけるとhappyです。

with one comment

Written by 中嶋 一樹

3月 18th, 2011 at 1:03 pm

Posted in Uncategorized

Tagged with , ,

One Response to 'EC2上でカスタムOracle Linux AMIを作成する・その全工程'

Subscribe to comments with RSS or TrackBack to 'EC2上でカスタムOracle Linux AMIを作成する・その全工程'.

  1. [...] 先日US East (Virginia)で作成・公開したカスタムOracle Linux AMIですが、AP North East (Tokyo)でも公開しました。モノは全く同じで、Grid InfrastructureやOracle Databaseの検証を行うのに適したミニマムOSです。 AMI ID: ami-8ae3498b Name: Oracle Linux 5.6 64bit customized by nkjm Region: AP North East (Tokyo) [...]

Leave a Reply