そのインスタンスの初期設定cloud-initでできるかも
cloud-initとは
cloud-initはマシンの初期設定を自動で行うためのツールです。 これをつかえば、sshの共有鍵の設定、タイムゾーン、パッケージのインストールなどを行うことができます。 yamlで必要な設定を宣言すれば、あとは自動で設定してくれるので便利です。 実はEC2はインスタンスの起動時にcloud-initを実行してユーザーの作成などの初期設定を行っています。 AWS以外のクラウドでも利用でき、様々なLinuxディストリビューションで利用できます。
EC2で使ってみる
EC2ではインスタンスの起動時にユーザーデータとしてシェルスクリプトを渡して実行することができますが、cloud-initファイルも実行することができます。 以下ではApacheサーバーのインストールをcloud-initを使用してやってみましょう。 使用したイメージはAmazon Linux 2 64bit x86です。
#cloud-config repo_update: true repo_upgrade: all packages: - httpd runcmd: - systemctl start httpd.service - systemctl enable httpd.service
1行目の#cloud-config
は単なるコメントではなくcloud-initの設定ファイルとしてこれを使用するために必要です。
他にできること
個人的に気になったものをいくつか上げておきます。他にもたくさんあるので調べてみてください。 ChefやPuppetを呼び出すこともできるみたいです。 ここで見るのがわかりやすいかもしれません。
write_files: - content: | 0 * * * * root some_command path: /etc/crontab append: true
timezone: Asia/Tokyo
うまくいかない時
EC2の場合、以下のパスに実行時のログが出るので確認してみてください。
less /var/log/cloud-init-output.log
まとめ
- cloud-initは初期設定を行うツール
- AWS以外でも使える