こんにちは。CTOの馬場です。
今回はIaaSの中でも数少ないDNSサービス Cloud DNSを使ってみましょう。
いまはまだWebコンソールのメニューが見当たらないので、
gcutil
の gcloud
コマンドを使います。
gcloud auth login
、
gcloud config set project
してある状態で操作します。
設定がまだの場合は Google Cloud Platformをはじめようチュートリアル を見て設定しておいてください。
手元のPCにインストールしたくない人は Google Cloud PlatformのCLIツールgcutilをDockerで使う をご覧ください。
Cloud DNSとは
AWSでいうところのRoute53のようなDNSサービスです。
レコードは A, AAAA, CNAME, MX, NS, PTR, SOA, SPF, SRV, TXT が利用できます。
IaaSはたくさんありますが、 DNSサービスはそう多くないので大変助かりますね。
ゾーン作成
gcloud dns managed-zone create
で作成します。
gcloud dns managed-zone create --dns_name="example.com." --description="MY DESCRIPTION" examplecom
Y/n
を聞かれたら素直に y
しましょう。
Creating {'dnsName': 'example.com.', 'name': 'examplecom',
'description': 'MY DESCRIPTION'} in xxxx-xxxx-999
Do you want to continue (Y/n)? y
{
"creationTime": "2014-06-05T03:07:14.521Z",
"description": "MY DESCRIPTION",
"dnsName": "example.com.",
"id": "2876746949389940895",
"kind": "dns#managedZone",
"name": "examplecom",
"nameServers": [
"ns-cloud1.googledomains.com.",
"ns-cloud2.googledomains.com.",
"ns-cloud3.googledomains.com.",
"ns-cloud4.googledomains.com."
]
}
これだけで完了です。
あとはお名前.comなどで、 ドメイン(今回はexample.com)のDNSを上記の4つに設定しましょう。
レコード追加・削除
変更内容をJSONで書きます。
以下の gcloud
コマンドを実行すると
vim(おそらくEDITOR環境変数次第)が起動し、
JSONを書いて保存して終了です。
gcloud dns records --zone examplecom edit
SOAレコードの書き換えがあらかじめ記入されているので、 他に変更したい内容を追記します。
※以下がもともとの出力(あらかじめ記入されている)
{
"additions": [
{
"kind": "dns#resourceRecordSet",
"name": "example.com.",
"rrdatas": [
"ns-cloud1.googledomains.com. dns-admin.google.com. 1 21600 3600 1209600 300"
],
"ttl": 21600,
"type": "SOA"
}
],
"deletions": [
{
"kind": "dns#resourceRecordSet",
"name": "example.com.",
"rrdatas": [
"ns-cloud1.googledomains.com. dns-admin.google.com. 0 21600 3600 1209600 300"
],
"ttl": 21600,
"type": "SOA"
}
]
}
記入例はこちら。
※配列なので、追加する {}
の直前に ,
も忘れずに!
{
"additions": [
{
"kind": "dns#resourceRecordSet",
"name": "example.com.",
"rrdatas": [
"ns-cloud1.googledomains.com. dns-admin.google.com. 1 21600 3600 1209600 300"
],
"ttl": 21600,
"type": "SOA"
}
,{
"kind": "dns#resourceRecordSet",
"name": "www.example.com.",
"rrdatas": [
"192.168.0.1"
],
"ttl": 60,
"type": "A"
}
],
"deletions": [
{
"kind": "dns#resourceRecordSet",
"name": "example.com.",
"rrdatas": [
"ns-cloud1.googledomains.com. dns-admin.google.com. 0 21600 3600 1209600 300"
],
"ttl": 21600,
"type": "SOA"
}
]
}
保存してエディタを終了すると、 送信内容と結果がまるっとはいったJSONが表示されます。
{
"additions": [
{
"kind": "dns#resourceRecordSet",
"name": "example.com.",
"rrdatas": [
"ns-cloud1.googledomains.com. dns-admin.google.com. 1 21600 3600 1209600 300"
],
"ttl": 21600,
"type": "SOA"
},
{
"kind": "dns#resourceRecordSet",
"name": "www.example.com.",
"rrdatas": [
"192.168.0.1"
],
"ttl": 60,
"type": "A"
}
],
"deletions": [
{
"kind": "dns#resourceRecordSet",
"name": "example.com.",
"rrdatas": [
"ns-cloud1.googledomains.com. dns-admin.google.com. 0 21600 3600 1209600 300"
],
"ttl": 21600,
"type": "SOA"
}
],
"id": "1",
"kind": "dns#change",
"startTime": "2014-06-05T09:07:07.551Z",
"status": "pending"
}
しばし待てば完了です。
設定されているレコードは gcloud dns records list
で確認できます。
gcloud dns records --zone examplecom list
ゾーン削除
ゾーンまるごと消そうとしたときにレコードが残っていると、 エラーになり削除できません。 あらかじめレコードを削除しなくてはなりません。 親切ですね。
↓エラーになるようす
Deleting MYZONENAME in xxxx-xxx-999
Do you want to continue (Y/n)? y
{
"error": {
"code": 400,
"errors": [
{
"domain": "global",
"message": "The resource named 'MYZONENAME' cannot be deleted because it is not empty",
"reason": "containerNotEmpty"
}
],
"message": "The resource named 'MYZONENAME' cannot be deleted because it is not empty"
}
}
ERROR: (gcloud.dns.managed-zone.delete) ResponseError: status=400, code=Bad Request, reason(s)=containerNotEmpty
message=The resource named 'MYZONENAME' cannot be deleted because it is not empty
参考URL https://developers.google.com/cloud-dns/what-is-cloud-dns
ではでは、みなさまお試しください〜