【クラウドイニット】

cloud-init とは?

💡 VMの産声と同時に動く産院スタッフ——生まれた瞬間に名前・部屋・装備をまとめて用意してくれる
📌 このページのポイント
cloud-init による VM 初期化フロー cloud-config YAML定義 ・ホスト名 ・ユーザー作成 ・SSH鍵配置 ユーザー データ VM起動 cloud-init が実行 設定完了 即利用可能 ・pkg インストール済 ・SSH接続可 ・ファイル配置済 対応クラウド AWS GCP Azure OpenStack Vagrant
cloud-initはYAML定義をもとにVM起動時に自動で初期設定を完了させる
ひよこ ひよこ

クラウドVMを作ったとき、最初の設定って毎回手動でやるの?

ペンギン先生 ペンギン先生

cloud-initを使えばそれを自動化できるよ。VM起動時に一度だけ実行されるスクリプトみたいなもので、ホスト名の設定からSSH鍵の配置まで全部やってくれるんだ。

ひよこ ひよこ

どうやって使うの?

ペンギン先生 ペンギン先生

cloud-config形式のYAMLVM起動時の「ユーザーデータ」として渡すだけだよ。たとえばAWSならEC2起動時の設定画面や--user-dataオプションで指定できるんだ。

ひよこ ひよこ

どんなことができるの?

ペンギン先生 ペンギン先生

ユーザーの作成、SSH公開鍵の配置、hostnameの設定、apt/yumでのパッケージインストール、ファイルの書き込み、任意コマンドの実行なんかができるよ。Ansible playbookに渡すための前準備として使われることも多いね。

ひよこ ひよこ

TerraformAnsibleとは何が違うの?

ペンギン先生 ペンギン先生

cloud-initはVM起動時に1回だけ動くシンプルな初期化に特化しているんだ。Terraformはインフラ構成全体の宣言的管理、Ansibleはその後の継続的な構成管理が得意だよ。3つは組み合わせて使うことが多いんだ——Terraformサーバーを建て、cloud-initで最低限の初期化をして、Ansibleで詳細設定するってイメージだよ。

ひよこ ひよこ

どのクラウドでも使えるの?

ペンギン先生 ペンギン先生

AWSGCPAzureOpenStackはみんな対応しているよ。Ubuntuのデフォルトイメージには最初から入っているし、最近のAmazon LinuxやRHELにも含まれているんだ。だから一度cloud-configの書き方を覚えれば、どのクラウドでも同じYAMLが使えて便利だよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「cloud-init」って出てきたら「VMを起動したとき自動で初期設定してくれるツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「cloud-init」 = クラウド初期化
💬 Ubuntu開発元のCanonicalが開発し、クラウド時代のVM初期化標準として普及したんだよ。「init」はOS起動時の初期化プロセスを意味するよ
← 用語集にもどる