id:aoonoです。OCI Computeでcloud-initのユーザーデータの利用法についてオラクルさんで動画を公開していたので当ブログで試してみた内容を紹介していきたいと思います。
cloud-initはAWS始め、Oracle Cloud等のインスタンス構築で利用される自動設定スクリプトです。
OSイメージを自作するまでではないが、Computeインスタンスを初期設定したい場合に利用すると便利な機能です。
この記事の到達目標
今回の記事では、OCI Computeでcloud-init(ユーザーデータ)を用いる方法を簡単に解説します。
素のOracle公式OSイメージを基に、 ユーザーデータに環境設定用のシェルスクリプトを指定することでhttpdサーバーをセットアップします。
前提
作成するインスタンスは
- CentOSのイメージを用います。
- グローバルIPを割り振ります。
- インスタンスを配置するサブネットのSecurity Listに httpプロトコルのルールを追加しておきます。
インスタンス作成手順
1. インスタンスを作成します。
Menu -> Compute -> Instances
からCreate Instance
をクリックします。
2. インスタンスのパラメータ設定
IMAGE OPERATING SYSTEM
をCentOS7とします。
ユーザーデータの入力欄は SSH KEYSの設定箇所の下にShow Advancec Option
のリンクがあるので、これをクリックすると、表示されます。
下図のように、ユーザーデータの入力欄が表示されます。
PASTE CLOUD-INIT SCRIPT
にチェックを入れます。
ユーザーデータのスクリプトを設定します。
今回のユーザーデータは以下の内容を設定しました。
#!/bin/bash sudo yum update -y sudo yum install -y httpd sudo systemctl enable httpd.service sudo firewall-offline-cmd --zone=public --add-service=http sudo echo "<html><body>Hello world</body></html>" >> /var/www/html/index.html sudo reboot
上記のスクリプトでは、以下の内容を実施しています。
- httpdを導入し、サービスの自動起動を設定
- firewalld に httpd のルールを追加
- /var/www/html/index.html にテストコンテンツを配置
- リブート
3. ユーザーデータを設定したインスタンスのデプロイ
その他の箇所は、任意で設定しインスタンスを作成してください。
動作確認
インスタンスの作成後、 ユーザーデータで指定したスクリプトが正常に走るまで、数分時間がかかります。
今回作成したインスタンスのユーザーのスクリプトが走り切りリブートまで完了後、作成したインスタンスのグローバルアドレスにブラウザからアクセスします。
すると、Webページが表示されることが確認できます。
Webページが表示されないような場合は、ユーザーデータが走り切るまで、時間を置いて再度アクセスしてみてください。
最後に
ユーザーデータを利用すること自体はComputeに元々あった機能ですが、マニュアルを参照しても特に目立った記載がなかったので、筆者は今までその存在に気が付きませんでした。
今回、OCI Computeでも利用できると知ったので後日、cloud-initスクリプトを利用したりTerraformで利用するなど、より詳細な使用方法を解説したいと考えています。
参考文献
Use cloud-init to Launch a Linux Instance on Oracle Cloud Infrastructure