CloudInitを使ってSSH公開鍵を自動設置する
会社のブログで書いたこともあり(ステマ)、最近はCloudInitで自動構成の実験をしたりしてます。
サーバの自動構成はChefやPuppetが有名ですが、CloudInitも手軽に使えるのでなかなか良い感じ。
EC2インスタンスのUser Dataで指定しちゃえばOKなので結構カジュアルに使えると思います。
ちなみにCloudInitはAWSだけで使えるのではなく、RackspaceやEucalyptusでも使う事が出来ます。
EC2インスタンス起動時にSSHの鍵をひとつ指定しますが、ログインする人が複数いる場合、起動後にauthorized_keysに公開鍵を登録していくのは面倒ですよね。
インスタンスが少なければ気になりませんが、台数が多くなるとミスも増えてしまいます。
そういう場合は以下のようにUserDataに書いてあげると幸せになれるかもしれません。
#cloud-config ssh_authorized_keys: - ssh-rsa AAAAB3NzaC1yc2EAABJQAAAIB-- 中略 --VuXwrjegwUm2QYHbSsuu== user1 - ssh-rsa AAAAB3NzaC1yc2EAABIwAAAQE-- 中略 --AqukVB5am9Y4WdM8eVLC== user2 - ssh-rsa AAAAB3NzaC1ycAAAABIwAAAQE-- 中略 --AvdM3xaYZ/h4w6nGXMxh== user3
※User DataはManagement Consoleからの起動時やec2-run-instancesの-fオプションなどで指定出来ます
指定した公開鍵が自動的にauthorized_keysに登録されるので、複数起動する時は便利ですね。
CloudInitはAmazon LinuxやUbuntuで使う事が出来ますが、今回は以下のAMIで動作確認を取りました。
- AMI: Amazon Linux AMI ID ami-e47acbe5 (x86_64)
- AMI: Ubuntu12.04 Cloud Guest AMI ID ami-60c77761 (x86_64)
- AMI: Fedora16 AMI ID ami-16219517 (x86_64)
インスタンスの自動構成は大事なポイントなので、もうちょっと勉強しないと:-)