【OCI_09】カスタム・イメージの作成と起動

AWSのAMIに相当するものはないかと調べたらOCIでは「カスタム・イメージ」がそれに該当するそうです。
今回は、Oracle Linuxで簡単なWEBサーバを構築、そのサーバのカスタム・イメージを作成し、
カスタム・イメージから新しいインスタンス(WEBサーバ)を起動するところまで検証したいと思います。
目次
1台目のインスタンスの作成
以下、手順を参考に1台目のインスタンスを作成します。
WEBサーバのインストールと各種設定
Apache HTTPサーバーをインストールします。「Complete!」が表示されればインストールは完了しています。
sudo yum -y install httpd
サービスを起動して、OSを再起動してもサービスが自動起動するよう設定します。
sudo systemctl start httpd
sudo systemctl enable httpd
サービスが起動しているか確認しておきます。
sudo systemctl status httpd

firewalldでポート番号を指定して、80番ポート(http)と443番(https)ポートをオープンします。「success」が表示されれば成功しています。
sudo firewall-cmd –permanent –add-port=80/tcp
sudo firewall-cmd –permanent –add-port=443/tcp
firewalldをリロードして設定を反映します。
sudo firewall-cmd –reload
index.html ファイルを作成し、「WEBサーバ1号機」と表示されるようにします。
sudo touch /var/www/html/index.html
sudo vi /var/www/html/index.html

パブリック・サブネットのセキュリティ・リストの編集
インスタンスへの通信を制御するにはサブネット単位のセキュリティ・リストとインスタンス単位のネットワーク・セキュリティ・グループの2種類あります。
今回は、80番ポート(http)と443番(https)ポートをオープンするようパブリック・サブネットのセキュリティ・リストを編集します。
左上ハンバーガーメニューから ネットワーキング > 仮想クラウド・ネットワーク > 作成済みVCN をクリックします。
「セキュリティ」タブを選択、パブリック・サブネットのセキュリティ・リスト をクリックします。
「セキュリティ・ルール」タブを選択、「イングレス・ルールの追加」をクリックします。
以下のとおり、80番ポート(http)と443番(https)ポートのルールを作成し、右下の「イングレス・ルールの追加」をクリックします。


イングレス・ルールが追加されました。

ブラウザから動作確認
インスタンスのパブリックIPアドレスを確認します。
ブラウザを起動、「http://パブリックIPアドレス」を入力してWEBページが表示されるか確認します。
「セキュリティで保護された接続はサポートされていません」が表示されるので「サイトに進む」をクリックします。
※httpのセキュアな通信でないためブラウザが警告しています

WEBサーバのindex.htmlの内容が表示されました。

1台目のインスタンスからカスタム・イメージを作成
WEBサーバの準備ができたのでカスタム・イメージを作成していきたいと思います。
カスタム・イメージの作成
左上ハンバーガーメニューから コンピュート > インスタンス をクリックします。
カスタムイメージにしたい既存インスタンスをクリックします。
右上のアクション > その他のアクション > カスタム・イメージの作成 をクリックします。

カスタム・イメージの作成画面で以下、入力、選択し、右下の「カスタム・イメージの作成」をクリックします。
コンパートメントに作成:自身の権限のあるコンパートメント
名前:任意名

該当インスタンスの画面で「イメージの作成中」となるのでしばらく待ちます。

「実行中」に変わりました。

カスタム・イメージの確認
作成したカスタム・イメージを確認します。
左上ハンバーガーメニューから コンピュート > カスタム・イメージ をクリックします。
先ほど作成したカスタム・イメージが確認できます。

カスタム・イメージから新しいインスタンスを作成
カスタム・イメージから新しいインスタンスを作成していきます。
左上ハンバーガーメニューから コンピュート > カスタム・イメージ をクリックします。
カスタム・イメージ名をクリックします。
右上の「インスタンスの作成」をクリックします。
この後、通常のインスタンス作成画面に切り替わります。

ここからは1台目のインスタンスを作成した時と同じ流れとなります。
基本情報は以下のとおり入力、選択します。
「名前」は、任意の名前を入力します。
「コンパートメント」は権限のあるコンパートメントが表示されていることを確認します。
配置の「可用性ドメイン」は、指定しているリージョンの可用性ドメインを選択します。
※私は大阪リージョンで可用性ドメインが1つですので選択の余地はありません

「イメージ」は、自動的にカスタムイメージが選ばれています。

「シェイプ」は、「シェイプの変更」から「Intel」の「VM.Standard3.Flex」へ変更し、「次」をクリックします。

「セキュリティ」は、デフォルトのままで「次」をクリックします。

ネットワーキングは、以下のとおり入力、選択します。
「VNIC名」は、デフォルトの空欄のままとします。
「プライマリ・ネットワーク」は、「既存の仮想クラウド・ネットワークを選択」を選択し、自身の権限のあるコンパートメント、作成したVCNを選択します。
「サブネット」は、「既存のサブネットを選択」を選択し、自身の権限のあるコンパートメント、パブリック・サブネットを選択します。

「プライベートIPv4アドレス」は、「プライベートIPv4アドレスの自動割当て」を選択します。
「パブリックIPv4アドレスの自動割当て」は、デフォルトのままONにします。
「IPv6アドレス」は、デフォルトのままOFFにします。

「SSHキーの追加」は、「キー・ペアを自動で生成」を選択し、「秘密キーのダウンロード」、「公開キーのダウンロード」をクリックし、ダウンロードしておきます。
「次」をクリックします。

ブート・ボリュームは、公式ドキュメントに従って以下のとおり設定します。
「カスタム・ブート・ボリューム・サイズを指定します」は、デフォルトのままOFFとします。
「転送中暗号化の使用」は、デフォルトのままONとします。
「自分が管理するキーでこのボリュームを暗号化」は、デフォルトのままOFFとします。
「次」をクリックします。

確認画面で設定内容を確認し、「作成」をクリックします。
※表示が長いので割愛します

インスタンスの作成が開始され、ステータスは「プロビジョニング中」になりました。
チュートリアルによるとLinux系インスタンスの作成には約1~2分、Windows系インスタンスの作成には約5~6分かかると記載がありました。

「プロビジョニング中」が「実行中」となり状態も「成功」になりました。
左上の「インスタンス」をクリックします。

インスタンスが作成されました。
「パブリックIP」を確認し、控えておきます。

インスタンスへSSHで接続
カスタム・イメージからパブリック・サブネットへ新規インスタンスを起動しました。
パブリック・サブネットのセキュリティ・リストは、すでにSSH(22番)、HTTP(80番)、HTTPS(443番)ポートが解放されています。
ですので新規インスタンスのパブリックIPアドレスでSSH接続できるはずです。
Teratermを利用する場合、「ユーザー名」は、「opc」を入力し、認証方式で「RSA/DSA/ECDSA/ED25519鍵を使う」を選択します。
「秘密鍵」は、事前にダウンロードした拡張子がkeyのファイルを選択し、「OK」をクリックします。
SSHで接続できました。

WEBサーバのindex.html編集
カスタム・イメージ化する前の既存インスタンスで設定したindex.htmlの内容を編集します。
index.html ファイルを編集し、「WEBサーバ2号機」と表示されるようにします。
sudo vi /var/www/html/index.html

ブラウザから動作確認
インスタンスのパブリックIPアドレスを確認します。
ブラウザを起動、「http://パブリックIPアドレス」を入力してWEBページが表示されるか確認します。
「セキュリティで保護された接続はサポートされていません」が表示されるので「サイトに進む」をクリックします。
※httpのセキュアな通信でないためブラウザが警告しています

WEBサーバのindex.htmlの内容が表示されました。

まとめ
今回は、Oracle Linuxで簡単なWEBサーバを構築、そのWEBサーバのカスタム・イメージを作成し、カスタム・イメージから新しいインスタンス(WEBサーバ)を起動するところまで検証しました。
次回は、この2台のWEBサーバをロードバランサー配下に所属させて負荷分散されるか確認していきたいと思います。
以下、他の記事をまとめた一覧です。OCI以外にAWSもまとめています。