使用gcloud通过从文件中读取/管道化来编辑DNS记录
我可以使用gcloud工具通过使用以下命令从vi/mate交互编辑JSON文件来编辑DNS记录:使用gcloud通过从文件中读取/管道化来编辑DNS记录,dns,gcloud,google-cloud-dns,Dns,Gcloud,Google Cloud Dns,我可以使用gcloud工具通过使用以下命令从vi/mate交互编辑JSON文件来编辑DNS记录: gcloud dns records --zone=myzone edit 但是,我希望能够进行批量更新,例如: gcloud dns records --zone=myzone edit < my-additional-records.txt EDITOR=ed gcloud dns records --zone=myzone edit <<-EOF 12i , {
gcloud dns records --zone=myzone edit
但是,我希望能够进行批量更新,例如:
gcloud dns records --zone=myzone edit < my-additional-records.txt
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
gcloud dns记录--zone=myzone编辑
…其中my-additional-records.txt包含我要添加的DNS记录
我认为这并不像要编辑的JSON文件包含DNS记录的添加和删除那样简单。因此,任何提示都将不胜感激。我自己没有尝试过,但是如果JSON格式是这里的格式: 只设置
删除:[]
(空JSON数组)怎么样。
这难道不能实现您想要的(不删除)吗?这是失败的原因吗
更新1:
我发现,如果问题是程序的实际管道输入,而您找不到基于shell的方法来执行此操作,这说明了如何编写此操作的脚本(使用python)。我认为您可以尝试使用linux行编辑器“ed”,如下所示:
gcloud dns records --zone=myzone edit < my-additional-records.txt
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
有关如何使用ed的更多详细信息,请参见此处:提供此新答案,因为
gcloud dns…
自提出此问题以来已得到显著改进。现在有两种方法可以编辑记录集
gcloud dns record-sets export --zone my-zone RECORDS-FILE
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
默认情况下,RECORDS-FILE
为yaml格式。您还可以使用--zone file format
标志将其输入
然后,您可以使用您选择的任何编辑器编辑RECORDS-FILE
,并使用以下方法导入更改的记录:
gcloud dns record-sets import --zone my-zone --delete-all-existing RECORDS-FILE
导入还接受--区域文件格式
。如果只想添加/编辑某些记录,而不是全部记录,可以省略--删除所有现有的标志
gcloud dns record-sets export --zone my-zone RECORDS-FILE
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