okochangの馬鹿でありがとう

ふらふら適当に世間を生きる日々でございます

CloudInitを使ってSSH公開鍵を自動設置する

f:id:okochang:20120503170729p:plain  f:id:okochang:20120503170745p:plain  f:id:okochang:20120503170708p:plain

会社のブログで書いたこともあり(ステマ)、最近は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)

インスタンスの自動構成は大事なポイントなので、もうちょっと勉強しないと:-)