ConoHaのDNSをCLI上で操作できるツール

3 min read

こんにちは、無能です。
ConoHaにNS移管と共に10ドメイン程度移管する必要になりました。

作りました

GitHub - haturatu/conoha-dns: ConoHaのDNSをCLIで操作できるツール

ConoHaのAPI Key自体の認証トークンの有効期間は24Hです。

環境変数にAPI Token発行に必要な情報があれば--authで認証が通せられます。 .conoha-env:

CONOHA_USER_ID="your_user_id"                             # API ユーザー: ユーザID
CONOHA_PASSWORD="your_password"                           # API ユーザー: パスワード
TENANT_ID="your_tenant_id"                                # テナント情報: テナントID
CONOHA_AUTH_URL="https://identity.sample.conoha.io"       # エンドポイント: Identity Service URL
CONOHA_DNS_API_URL="https://dns-service.sample.conoha.io" # エンドポイント: DNS Service URL

この状態で--authします。

$ conoha-dns --auth
APIトークンが見つからないため、認証して新しいトークンを取得します...
新しいAPIトークンを取得しました。
/home/haturatu/.conoha-envファイルにCONOHA_TOKENを追記しました。
認証に成功し、APIトークンが利用可能です。

その後、-l/--listでそのままリスト表示とそのまま-l/--listに引数を与えるとDNSのレコードが確認できます。

thepassenger:[haturatu]:~$ conoha-dns -l
  ID         Name                          
  0e6f0695   soulminingrig.com.            
  4fb208de   eyes4you.org.                 
~~~   
thepassenger:[haturatu]:~$ conoha-dns -l soulminingrig.com
  ID         Name                     Type   TTL      Data
  cc29e413   soulminingrig.com.       SOA   3600     a.conoha-dns.com. postmaster.example.org. 1757988182 3600 600 86400 3600
  5c0dcdbd   soulminingrig.com.       NS    3600     a.conoha-dns.com.
  5c3aa1fd   soulminingrig.com.       NS    3600     b.conoha-dns.org.
  ddd21438   soulminingrig.com.       A     300      163.44.113.145
  b5d8c8f7   www.soulminingrig.com.   A     300      163.44.113.145
  6124c6f7   git.soulminingrig.com.   A     300      163.44.113.145
  0a74b0bc   a.soulminingrig.com.     A     300      163.44.113.145
thepassenger:[haturatu]:~$ conoha-dns -l 0e6f0695
  ID         Name                     Type   TTL      Data
  cc29e413   soulminingrig.com.       SOA   3600     a.conoha-dns.com. postmaster.example.org. 1757988182 3600 600 86400 3600
  5c0dcdbd   soulminingrig.com.       NS    3600     a.conoha-dns.com.
  5c3aa1fd   soulminingrig.com.       NS    3600     b.conoha-dns.org.
  ddd21438   soulminingrig.com.       A     300      163.44.113.145
  b5d8c8f7   www.soulminingrig.com.   A     300      163.44.113.145
  6124c6f7   git.soulminingrig.com.   A     300      163.44.113.145
  0a74b0bc   a.soulminingrig.com.     A     300      163.44.113.145

Help

$ conoha-dns -h
usage: conoha-dns [-h]
                  (--auth | -l [DOMAIN] | -ad NAME EMAIL | -dd DOMAIN | -ar DOMAIN NAME TYPE DATA | -ur DOMAIN RECORD_ID | -dr DOMAIN RECORD_ID)
                  [-t TTL] [-o {csv}] [--new-name NEW_NAME] [--new-type NEW_TYPE] [--new-data NEW_DATA] [--new-ttl NEW_TTL]

ConoHa DNS API (v1) を操作するCLIツール

options:
  -h, --help            show this help message and exit
  --auth                APIトークンを認証・取得する
  -l [DOMAIN], --list [DOMAIN]
                        ドメイン一覧または指定ドメインのレコード一覧表示
  -ad NAME EMAIL, --add-domain NAME EMAIL
                        ドメイン追加
  -dd DOMAIN, --delete-domain DOMAIN
                        ドメインを名前またはIDで削除
  -ar DOMAIN NAME TYPE DATA, --add-record DOMAIN NAME TYPE DATA
                        レコード追加
  -ur DOMAIN RECORD_ID, --update-record DOMAIN RECORD_ID
                        レコード更新
  -dr DOMAIN RECORD_ID, --delete-record DOMAIN RECORD_ID
                        レコード削除
  -t TTL, --ttl TTL     レコード追加時のTTL()。デフォルト: 300
  -o {csv}, --output {csv}
                        出力形式をCSVにします。'-l'での一覧表示時のみ有効です。
  --new-name NEW_NAME   更新後のレコード名
  --new-type NEW_TYPE   更新後のレコードタイプ
  --new-data NEW_DATA   更新後のレコードデータ
  --new-ttl NEW_TTL     更新後のTTL

使用例:
  # APIトークンを認証・取得
  conoha-dns --auth

  # ドメイン一覧表示
  conoha-dns -l

  # レコード一覧をCSV形式で標準出力
  conoha-dns -l example.com --output csv > records.csv

  # Aレコード追加 (サブドメインtestを補完してtest.example.comを追加)
  conoha-dns -ar example.com @ A 192.0.2.1
  conoha-dns -ar example.com test A 192.0.2.1

  # レコード更新 (レコードIDを指定し、新しいIPアドレスを設定)
  conoha-dns -ur example.com <record_id> --new-data 192.0.2.2

  # レコード削除 (レコードIDは -l example.com で確認)
  conoha-dns -dr example.com <record_id>

ちなみに元のレコード/ドメイン自体のIDが長すぎていたので確認しやすいようにxxhashでハッシュした値にして確認しやすいようにはしています。

よくよくおもったけど--renewとかで古いAPI Key情報捨ててすぐに使えるようにすればよかったですかね^^;
現状dotfileである.conoha-envCONOHA_TOKEN行を削除しないと使えません。それではまた。よろしくお願いします。

PGP --- Contact --- Machines --- cat -v