こんにちは、SREチーム エンジニアの綿引です。
Route 53 に大量のレコードを登録する時、ホストゾーンに作成したレコードがなければ 「ゾーンファイルのインポート」 が使えますが、1レコードでも作ってしまうと使えないため、大量のレコードを泣く泣く手で登録したという経験がある方もいらっしゃるのではないでしょうか?
そこで Route 53 に cli53 とシェルを使って複数のレコードを登録してみました。
既存のホストゾーンに大量のレコードを追加したいが手動は嫌だ! という方のご参考になればと思います。
cli53 とは
cli53 は GitHub で公開されている Route 53 へのレコード登録・削除・更新ができるツールです。
他にもホストゾーンの作成・削除・一覧表示や、フェイルオーバー、加重レコード など細かい設定もできるようです。
検証準備
検証の準備として以下を用意します。
実際に使用する際はホストゾーンを対象のものに読み替えていただければと思います。
- ホストゾーンはテスト用に 「test.example」 を作成
- 自端末(Mac)に AWS CLI をインストールし credentials の設定も行う
cli53 インストール方法
では cli53 を Mac にインストールしていきます。
Linux、Mac、Windows で使えるようですが、今回は Mac にインストールしたいと思います。
$ brew install cli53
Mac から Route 53 に対して更新を行うので認証情報設定ファイルも用意しておきます。
$ cat ~/.aws/credentials [default] aws_access_key_id = XXXXXXXXXXXXXXXXXXXX aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
レコード登録
追加コマンドの書式は以下です。
$ cli53 rrcreate {ホストゾーン} '{Name} {TTL} {Type} {Value}'
では実際に1レコード追加してみましょう。これが追加前のホストゾーンです。
以下のコマンドで追加を行います。
$ cli53 rrcreate test.example 'test1 60 A 127.0.0.0'
想定のレコードが追加されました。
シェルで複数レコードを登録してみる
次はシェルを使って複数のレコードを登録していきます。
今回はサブドメインだけ異なる Value は同じレコードを 5 つほど登録します。
実行ファイルのシェルとは別に、登録するサブドメインに関しては conf ファイルを別で作成し read で読み込む形にします。
まずは実行ファイルである cli53_test.sh を Mac に作成します。
cli53_test.sh
#!/bin/sh while read line do cli53 rrcreate test.example "$line 60 A 127.0.0.0" done < name.conf exit
次にサブドメインを一覧にした conf ファイルを作成します。
name.conf
test2 test3 test4 test5
あとは、シェルに実行権限を付与し、実行します。
$ ./cli53_test.sh Created record: 'test2.test.example. 60 IN A 127.0.0.0' Created record: 'test3.test.example. 60 IN A 127.0.0.0' Created record: 'test4.test.example. 60 IN A 127.0.0.0' Created record: 'test5.test.example. 60 IN A 127.0.0.0'
完了しました。
実際に対象のレコードが追加されました。
name.conf にサブドメインを追記していけば、大量のレコード追加も可能です。
最後に
今回は cli53 とシェルを使ってレコードを追加してみましたが、レコードをさくっと追加できていいツールでした。
シェルで Value 部分も変えたい場合は、read する conf ファイルを分けたり、cut などで必要なフィールドを取得すれば問題なさそうです。
エンジニア募集中
Wedding Parkでは一緒に技術のウエディングパークを創っていくエンジニアを募集しています。
興味のある方はぜひ一度気軽にオフィスに遊びにいらして頂ければと思います。
株式会社ウエディングパークwantedly