ImageBuilderで作成したカスタムAMIの初回起動時の設定
はじめに
先日、ImageBuilderを使用して、ZabbixAgentとSplunkをインストールしたカスタムAMIを作成しました。
このカスタムAMIを作成してEC2インスタンスを起動したのですが、Splunkが起動していませんでした。
$ cd /opt/splunk/bin
$ sudo ./splunk status
splunkd 3598 was not running.
Stopping splunk helpers...
[ OK ]
Done.
Stopped helpers.
Removing stale pid file... done.
EC2インスタンスを起動した直後に動作するよう、cronにSplunkを起動する設定を追加して検証します。
参考
システム起動時に1度だけ実行されるCronを設定する
ImageBuilderでカスタムAMIを作成
前提
ImageBuilderでカスタムAMIを作成を参考に、ImageBuilderの準備ができていることとします。
・コンポーネント
ZabbixAgent用
Splunk用
・イメージレシピ
上記コンポーネントを含んだイメージレシピ
・パイプライン
上記イメージレシピを使用するパイプライン
ImageBuilderのコンポーネントを追加
既存のコンポーネントに
echo '@reboot /opt/splunk/bin/splunk start' | crontab
を追記すればよいのですが、ここは共通的なコンポーネントを用意し、そちらに記述することにします。
新たに「CommonCompornent」というコンポーネントを用意しました。
コンポーネントは以下のように記述しています。
name: CommonModule
description: This is CommonModule document.
schemaVersion: 1.0
phases:
- name: build
steps:
- name: SetCron
action: ExecuteBash
inputs:
commands:
- echo '@reboot /opt/splunk/bin/splunk start' | crontab
作成したコンポーネントをイメージレシピに加えます。
既存のレシピを選択し、新バージョンのイメージレシピとして作成します。
コンポーネントは「ZabbixAgent」と「Splunk」の2つだけなので、ここに先ほど作成した「CommonCompornent」を追加します。
最後に、イメージパイプラインを編集モードで開き、使用するイメージレシピを先ほど作成した最新のバージョンに変更します。
これで、「ZabbixAgent」「Splunk」「CommonCompornent」の3つのコンポーネントが含まれたイメージパイプラインが完成します。
あとはパイプラインを実行し、作成されたカスタムAMIを使用してEC2インスタンスを起動。
起動後のEC2インスタンスにSSH接続し、Splunkが起動していることが確認できました。
$ cd /opt/splunk/bin
$ sudo ./splunk status
splunkd is running (PID: 3283).
splunk helpers are running (PIDs: 3287 3389 3469 3473).
おわりに
この、起動処理を初期処理として外出しするか、インストール用コンポーネントに含めるかは好みのところだと思いますが、今回は、インストールとは別の処理と位置づけ、「初期処理」として別コンポーネントにしてみました。
他にも、環境変数の設定や各種初期設定などがあれば、今回のようなCommonCompornentのように切り出しておくのが良いと思いました。