クラウドでVMを作ったとき、最初の設定って毎回手動でやるの?
cloud-initを使えばそれを自動化できるよ。VM起動時に一度だけ実行されるスクリプトみたいなもので、ホスト名の設定からSSH鍵の配置まで全部やってくれるんだ。
どうやって使うの?
cloud-config形式のYAMLをVM起動時の「ユーザーデータ」として渡すだけだよ。たとえばAWSならEC2起動時の設定画面や--user-dataオプションで指定できるんだ。
どんなことができるの?
ユーザーの作成、SSH公開鍵の配置、hostnameの設定、apt/yumでのパッケージインストール、ファイルの書き込み、任意コマンドの実行なんかができるよ。Ansible playbookに渡すための前準備として使われることも多いね。
TerraformやAnsibleとは何が違うの?
cloud-initはVM起動時に1回だけ動くシンプルな初期化に特化しているんだ。Terraformはインフラ構成全体の宣言的管理、Ansibleはその後の継続的な構成管理が得意だよ。3つは組み合わせて使うことが多いんだ——Terraformでサーバーを建て、cloud-initで最低限の初期化をして、Ansibleで詳細設定するってイメージだよ。
どのクラウドでも使えるの?
AWS・GCP・Azure・OpenStackはみんな対応しているよ。Ubuntuのデフォルトイメージには最初から入っているし、最近のAmazon LinuxやRHELにも含まれているんだ。だから一度cloud-configの書き方を覚えれば、どのクラウドでも同じYAMLが使えて便利だよ。