我可以使用gcloud工具编辑DNS记录,方法是使用以下命令从vi / mate交互式编辑JSON文件:
gcloud dns records --zone=myzone edit
但是,我希望能够进行批量更新,如下所示:
gcloud dns records --zone=myzone edit < my-additional-records.txt
...其中my-additional-records.txt包含我要添加的DNS记录。
我认为编辑的JSON文件包含DNS记录的添加和删除都不是那么简单。所以,任何提示都将受到赞赏。
答案 0 :(得分:4)
我认为您可以尝试使用linux line editor&#39; ed&#39;像这样:
EDITOR=ed gcloud dns records --zone=myzone edit <<-EOF
12i
, {
"kind": "dns#resourceRecordSet",
"name": "a.mydomain.org.",
"rrdatas": [
"111.222.111.222"
],
"ttl": 21600,
"type": "A"
}
.
,wq
EOF
这假设编辑文件的顶部看起来像这样(所以你要添加到第12行)
{
"additions": [
{
"kind": "dns#resourceRecordSet",
"name": "mydomain.org.",
"rrdatas": [
"ns-cloud-c1.googledomains.com. dns-admin.google.com. 2 21600 3600 1209600 300"
],
"ttl": 21600,
"type": "SOA"
},
有关如何在此处使用ed的详细信息:http://www.gnu.org/software/ed/manual/ed_manual.html
答案 1 :(得分:2)
自提出此问题以来,gcloud dns ...
以来提供此新答案已得到显着改善。现在有两种方法可以编辑记录集。
使用导出/导入命令,如下所示:
gcloud dns record-sets export --zone my-zone RECORDS-FILE
默认情况下,RECORDS-FILE
采用yaml格式。您也可以使用--zone-file-format
标记在zone file format中获取它。
然后,您可以使用您选择的任何编辑器编辑RECORDS-FILE
,并使用以下命令导入更改的记录:
gcloud dns record-sets import --zone my-zone --delete-all-existing RECORDS-FILE
导入也接受--zone-file-format
。如果您只想添加/编辑某些记录而不是所有记录,则可以省略--delete-all-existing
标记。
使用事务命令组,如下所示:
gcloud dns record-sets transaction start # Start transaction
gcloud dns record-sets transaction add/remove # Add remove records
gcloud dns record-sets transaction execute # Execute transaction
答案 2 :(得分:0)
我自己没有尝试过,但如果JSON格式是这里的那个: https://developers.google.com/cloud-dns/getting-started
如何设置deletions : []
(空JSON数组)。
不会实现你想要的(没有删除)?是不是以某种方式失败了?
更新1:
如果问题是程序的实际管道输入并且您无法找到基于shell的方法,我找到了this migration script,它显示了如何编写此操作的脚本(使用python)