Glide Note

glidenote's blog

Roadworkerとdirenvを使ってRoute53のDNSレコードを管理する & Roadworker用にVimプラグインとZsh補完関数も作った

TL;DR

  • Route53のDNSレコード管理にはRoadworkerとdirenvを組み合わせて使うと便利
  • Roadworkerを使いやすくするために、VimプラグインとZsh補完関数を作った

(TL;DR使ってみたかった)

経緯

会社でRoute53に移行したチームがあって、レコードの管理にRoadworkerを使ってて、 私もちょっと使ってみたんですが、コマンドラインからの使い勝手と、Routefileの編集が そのままだと不便だったので、使い勝手が良くなるようにdirenv使ったり、 Vimプラグインとzsh補完関数を作ったりした。

Macでの作業を想定してます。

Roadworkerのインストール

1
gem install roadworker

direnvのインストール

direnvはgoで書かれていてbrewコマンドで導入が可能。

1
brew install direnv

~/.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_IDAWS_SECRET_ACCESS_KEYを環境変数を設定しないといけないんですが、 毎回設定するのが面倒なので、これをdirenvにやって貰う。

具体的には、Route53のドメインを管理する(Routefileを管理している)ディレクトリに移動して、 direnv経由で、.envrcを作成する

1
direnv edit .

.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の方が他のツールと組み合わせやすくて便利な気がする。

参考

Comments