我尝试使用gcloud dns transaction remove命令无济于事,以删除我添加到区域中以指向子域的名称服务器条目。
我认为找到删除子域名称服务器条目的唯一方法是拉出整个区域文件,删除条目并导入编辑的区域文件。但是,这似乎很危险并且容易出错。
有人知道如何使用gcloud dns记录集事务删除然后使用gcloud dns记录集事务执行命令来摆脱NS条目吗?
我已经尝试过了:
gcloud dns record-sets transaction start --zone ${ZONE_NAME}
gcloud dns record-sets transaction remove "${NS_0}" "${NS_1}" --name "${friendly_hostname}" --zone ${ZONE_NAME} --ttl 600 --type=NS
但是,每次执行此操作时,都会收到以下错误消息:
ERROR: (gcloud.dns.record-sets.transaction.remove) Record to be removed does not exist
答案 0 :(得分:0)
要使用命令“ transaction remove”,您需要运行以下命令(将[]的内容修改为适当的值):
$ gcloud dns记录集事务开始-z = [examplezonename]
它将开始交易。
$ gcloud dns记录集事务删除--name =“ [名称(记住最后一个文档”。“”)]“ --type =” NS“ --ttl = [time_in_seconds] -z =” [name_of_the_DNS_zone] “” [[DNS服务器的完整名称(也是最后一个文档。“]”“ [DNS服务器的完整名称(也是最后一个文档。”]“
我自己尝试过,并且工作正常。
答案 1 :(得分:0)
正在回答,因为这花了我太多时间才意识到:
“ gcloud dns记录集事务删除”命令和“ gcloud dns记录集列表”命令之间的DATA语法不同!
列出后,gcloud返回如下所示的名称服务器列表:
ns-cloud-e1.googledomains.com.,ns-cloud-e2.googledomains.com.,ns-cloud-e3.googledomains.com.,ns-cloud-e4.googledomains.com.
但是,如果您要在字段DATA中包含包含这些ns服务器的ns记录,则gcloud希望将它们完全隔离,如下所示:
ns-cloud-e1.googledomains.com. ns-cloud-e2.googledomains.com. ns-cloud-e3.googledomains.com. ns-cloud-e4.googledomains.com.
这意味着,如果使用上述命令提取ns记录的数据以使用它们进行删除,则必须像这样转换它们:
read DNS_NAME DNS_TYPE DNS_TTL DNS_DATA <<< "$(gcloud dns record-sets list --project=$MYPROJECT --zone=$PARENT_ZONE --name=$PLATFORM_DOMAIN|tail -n +2)"
gcloud --project=$MYPROJECT dns record-sets transaction start --zone="$PARENT_ZONE"
gcloud --project=$MYPROJECT dns record-sets transaction remove --name="${PLATFORM_DOMAIN}" --ttl=$DNS_TTL --type=$DNS_TYPE --zone=$PARENT_ZONE ${DNS_DATA//,/ }
gcloud --project=$MYPROJECT dns record-sets transaction execute --zone="$PARENT_ZONE"
我为此创建了问题https://issuetracker.google.com/issues/159051721,希望他们在不久的将来解决此问题,因为这确实会引起误解!