Transactions gcloud dns删除子域NS记录

Transactions gcloud dns删除子域NS记录,transactions,gcloud,Transactions,Gcloud,我尝试使用gcloud dns transaction remove命令来删除我添加到区域以指向子域的名称服务器条目,但无效 我认为我找到的删除子域nameserver条目的唯一方法是拉取整个区域文件,删除该条目,然后导入已编辑的区域文件。然而,对我来说,这似乎是危险和容易出错的 有人知道如何使用gcloud dns记录集事务删除然后gcloud dns记录集事务执行命令来删除NS条目吗 我试过这个: gcloud dns record-sets transaction start --zon

我尝试使用gcloud dns transaction remove命令来删除我添加到区域以指向子域的名称服务器条目,但无效

我认为我找到的删除子域nameserver条目的唯一方法是拉取整个区域文件,删除该条目,然后导入已编辑的区域文件。然而,对我来说,这似乎是危险和容易出错的

有人知道如何使用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
要使用“transaction remove”命令,您需要运行以下命令(修改[]的内容以获得正确的值):

$gcloud dns记录集事务开始-z=[examplezonename]

它将启动事务

$gcloud dns record set transaction remove--name=“[name(记住最后一个文档)”)”--type=“NS”--ttl=[time\u in\u seconds]-z=“[name\u of_the_dns\u zone]”“[full\u name\u of_dns\u server(也是最后一个文档)”,“[full\u name\u of_of_dns\u server(也是最后一个文档)””


我自己试过,效果很好。

回答,因为我花了太长时间才意识到:

“gcloud dns记录集事务删除”和“gcloud dns记录集列表”命令之间的数据语法不同

列出后,gcloud将返回一个名称服务器列表,如下所示:

ns-cloud-e1.googledomains.com.,ns-cloud-e2.googledomains.com.,ns-cloud-e3.googledomains.com.,ns-cloud-e4.googledomains.com.
ns-cloud-e1.googledomains.com. ns-cloud-e2.googledomains.com. ns-cloud-e3.googledomains.com. ns-cloud-e4.googledomains.com.
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"
但是,如果您希望在现场数据中包含这些ns服务器的ns记录,gcloud希望将它们分开,如下所示:

ns-cloud-e1.googledomains.com.,ns-cloud-e2.googledomains.com.,ns-cloud-e3.googledomains.com.,ns-cloud-e4.googledomains.com.
ns-cloud-e1.googledomains.com. ns-cloud-e2.googledomains.com. ns-cloud-e3.googledomains.com. ns-cloud-e4.googledomains.com.
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"
这意味着,如果您使用上述命令提取ns记录的数据以将其用于删除,则必须按如下方式转换它们:

ns-cloud-e1.googledomains.com.,ns-cloud-e2.googledomains.com.,ns-cloud-e3.googledomains.com.,ns-cloud-e4.googledomains.com.
ns-cloud-e1.googledomains.com. ns-cloud-e2.googledomains.com. ns-cloud-e3.googledomains.com. ns-cloud-e4.googledomains.com.
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"
读取DNS\u名称DNS\u类型DNS\u TTL DNS\u数据