デプロイユーザーをSTNSで管理する

先日リリースしたSTNS 0.0.2においてlink_usersという設定項目を追加し、デプロイユーザーをまとめて管理する仕組みを追加しました。

困りごと

僕が所属しているムームードメインでは複数のエンジニアが在籍しており、アプリケーションのデプロイにはCapistranoを利用しています。
デプロイする際にはデプロイ専用のユーザーを各サーバにchefで作成し、人員の増減があった場合は、都度デプロイユーザーのauthorized_keysを書き換えるような運用を行っていました。

Untitled (1)

この場合、例えばデザイナーがスポットでデプロイが必要だったりした時にいちいちchef流さなければならなかったり、authorized_keysファイルの中身って公開鍵だけしか書いてないので、そもそも管理が煩雑だったりします。

link_usersとは

先の困り事を解決するためにユーザーの公開鍵をマージする機能を追加しました。

[users.pyama]
keys = ["ssh-rsa aaa"]

[users.tukki]
keys = ["ssh-rsa bbb"]

[users.deploy]
link_users = ["pyama", "tukki"]

上記の定義を行うと、deployユーザーの公開鍵を取得すると下記の出力になります。

/user/local/bin/stns-key-wrapper deploy
ssh-rsa aaa
ssh-rsa bbb

このようにdeployユーザーで問い合わせるとpyamatukkiの公開鍵が返却されるので、人員の増減の際もSTNSだけ変更すればよく、また誰がdeploy出来るのかも一目瞭然です。

最後に

デプロイのみならず、昨今SSHを前提とした仕組みが多くある中で、細かいユーザー管理って意外とできていないと思っています。色々なところに闇アカウントがいたりすることって普通にあるんじゃないかなって思っていて、原因の一つに可視化しづらいことが一因だと考えています。
link_usersを使えば公開鍵とユーザーをしっかりと紐付けられるので使ってみてはいかがでしょうか?