一般化について
今回はOSの一般化について記載していこうと思います。
一般化とは
仮想環境を使っている場合、環境内の仮想マシンで共通にしたい設定を行ってからOSテンプレートを作成することになります。
しかしながら、OSには仮想マシンごとにユニークにならないといけないパラメータがあります。
こういった値を削除・初期化して再度設定される状態にしておくことを一般化といいます。
したがってOSテンプレートを作成する場合は、一般化を先に実施してからOSテンプレートを作成します。
Windowsの場合
Windows端末の場合は、一般化していない状態で端末を複製した場合、ADのドメインに参加しようとするとSIDという値が重複するため、2台目以降の仮想マシンがドメイン参加できないといった事象が発生します。
こういった事象を防ぐために一般化を実施しますが、一般化のためのツールとして"sysprep"というツールが標準で提供されています。
SIDやsysprepについては、より詳しい説明を行っている方が多数いらっしゃいますのでここでの説明は割愛します。
ほかに注意すべき事項としては、sysprepにより一般化されるのはMicrosoftから提供されているOS標準のぶぶんとなります。
3rdパーティなどから提供されているソフトウェアなどはインストール時や初回起動時にユニークなIDを生成するものがあります。
そういったものはいつユニークなIDが生成されるのか、IDを再生成する方法はあるのか確認しておきましょう。
場合によってはOSテンプレートにはインストーラーのみ配置しておき、ソフトウェアインストール・セットアップはOSデプロイ後に実施する必要があります。
Linuxの場合
Linuxの場合はよくあるのがOpenSSHのSSHホストキーの初期化があげられます。
SSHのホストキーは原則としてSSHサーバごとにユニークになるべき値となりますので、初期化します。
Red Hat系のディストリビューションの場合は /etc/ssh/ にある ssh_host_(encrypttype)_key を削除して再起動すれば、プロセス再起動時に生成されます。
(encrypttype)には鍵の暗号の形式が入ります。一括で削除する場合は以下のコマンドでよいでしょう。
rm -rf /etc/ssh/ssh_host_*key*
一般化という意味だと、OSの再起動時にプロセスが併せて再起動しますので、削除した状態で仮想マシンをシャットダウンし、テンプレート化すればよいでしょう。
Debian系(Debian、Ubuntuなど)の場合は鍵を削除した後、dpkg-reconfigureを利用して再作成するようです。
生成のタイミングとしてはdpkg-reconfigure実行時のようなので何か作りこみがいるかもしれません。
他にはネットワークインターフェースの設定を初期化することなどがあげられます。
また、rootアカウントのパスワードなどは設定しないことはできないため、テンプレートとしての初期値を決めておいて設定し、デプロイ後に個別に変更するような運用にすることが考えられます。