TL;DR
- Route53のDNSレコード管理にはRoadworkerとdirenvを組み合わせて使うと便利
- Roadworkerを使いやすくするために、VimプラグインとZsh補完関数を作った
(TL;DR
使ってみたかった)
経緯
会社でRoute53に移行したチームがあって、レコードの管理にRoadworkerを使ってて、
私もちょっと使ってみたんですが、コマンドラインからの使い勝手と、Routefileの編集が
そのままだと不便だったので、使い勝手が良くなるようにdirenv使ったり、
Vimプラグインとzsh補完関数を作ったりした。
Macでの作業を想定してます。
Roadworkerのインストール
direnvのインストール
direnvはgoで書かれていてbrewコマンドで導入が可能。
~/.zshrc
に下記を追記。(もし$EDITOR
が設定されてない場合はそれも設定する)
1
| eval "$(direnv hook zsh)"
|
Roadworkerとdirenvを組み合わせて使う
Routeworkerを使うときに下記のように
1
2
| export AWS_ACCESS_KEY_ID='...'
export AWS_SECRET_ACCESS_KEY='...'
|
AWS_ACCESS_KEY_ID
とAWS_SECRET_ACCESS_KEY
を環境変数を設定しないといけないんですが、
毎回設定するのが面倒なので、これをdirenvにやって貰う。
具体的には、Route53のドメインを管理する(Routefileを管理している)ディレクトリに移動して、
direnv経由で、.envrc
を作成する
.envrc
の中身は下記のような感じ
1
2
| export AWS_ACCESS_KEY_ID='...'
export AWS_SECRET_ACCESS_KEY='...'
|
そうすると、コマンドラインから環境変数を設定しなくても、該当ディレクトリに移動すると
そのディレクトリ内だけでdirenvが.envrc
を読み込んで環境変数が設定される。
あとは普通にroadwork
コマンドでRoute53を操作するだけ。Roadworkerの使い方は下記が詳しいです。
roadworker.vim
RoadworkerからRoute53を操作するのに、Routefileの編集が必要なので、
Routefileの編集が楽になるようにプラグインを書いた。
下記みたいにsyntaxがきいたり、snippetを利用して簡単に編集が出来るようになります。 (左がsyntax無し、右がroadworker.vimによりsyntax有りの状態)
導入方法や使い方はREADME.mdを参照ください。
zsh補完関数
コマンドラインからも便利に使えるようにzsh補完関数を下記みたいなファイルを作成。
$fpath
の中に設置すれば、下記みたいな感じで動きます。(時間があるときに体裁整えて
zsh-users/zsh-completionsにPR出しておきます!)
Roadworkerを利用すれば、DNSレコードをRoutefileという形でgit管理出来るし、変更点をdry-runで事前チェックも出来る。
またテストコマンドもあるのでCI回したりして、より安全にドメイン操作が出来ると思う。(まだそこまで使いこなせてないけど!)
@deeeetさんがブログに書いてたようにDotenvより
direnvの方が他のツールと組み合わせやすくて便利な気がする。
参考