cloud-config の users パラメータにて coreos-ssh-import-github
を使う
#cloud-config
users:
- name: <ログインユーザ名>
coreos-ssh-import-github: <GitHub ユーザ名>
groups:
- docker
例
#cloud-config
users:
- name: seigo
coreos-ssh-import-github: spesnova
groups:
- docker
この部分の設定を cloud-config に追加して CoreOS を provisioning すれば、GitHub に登録した SSH 認証鍵を使ってログインできるようになる
$ ssh -i ~/.ssh/github_private_key seigo@core-01
GitHub Enterprise
#cloud-config
users:
- name: seigo
coreos-ssh-import-url: https://github-enterprise.example.com/api/v3/users/spesnova/keys?access_token=<TOKEN>
メモと感想
- 開発チームが本番/ステージング問わずサーバに SSH ログインする機会は少なからずあり、鍵の管理をどうするかって問題がある
鍵を管理するサーバを用意すればいいんだけど、既に利用してる GitHub がそれを担えるならそれ有効活用すればいいじゃんって思った次第。 10 人くらいの開発チームだと鍵サーバの面倒まで見るの大変だから GitHub の Public Keys API 本当にありがたい。で、さらに公開鍵を外部から取得しておくってのが 1 行で済む CoreOS ありがたやという話。
GitHub API の Organizations API を使ってチームメンバーのユーザ名一覧を取得してきて、それを元に cloud-config の users
パラメータを動的に設定すればメンバーが増えたとき楽できそう。(そのとき既存サーバはどう更新しよう...)
coreos-ssh-import-url
フィールドを使えば、好きな URL から公開鍵を取得して配置させることができるから、flynn 作者の progrium が作ってる progrium/keychain.io で自前で鍵サーバ用意するとかも簡単にできるのかもしれない。