【问题标题】:gcloud cli failing to add record when contents start with dash当内容以破折号开头时,gcloud cli 无法添加记录
【发布时间】:2021-07-08 02:32:11
【问题描述】:

我正在使用 LetsEncrypt dns-01 challenge system,这需要在 Google Cloud DNS 中动态创建具有特定内容的 TXT 记录,因此 LE 可以断言所有权证明以生成通配符证书(所以我不能使用 http-01 )。问题是有时 LE 告诉我创建一个以“-”开头的 TXT 记录,例如-E_DFDFHJKF1783FSHDJ。无论我做什么,我都无法让gcloud cli 正确接受这些数据。

例子:

gcloud dns record-sets transaction start --zone=myzone
gcloud dns record-sets transaction add "-E_ASDFSDF" --ttl=30 --zone=myzone --name=test --type=TXT
gcloud dns record-sets transaction remove "-A_DSFKHSDF" --ttl=30 --zone=myzone --name=test2 --type=TXT

如果您运行这些命令并检查生成的transaction.yaml,您可以查看它是否正确包含正确的字符串。如果它正确,您应该会看到类似的内容:

- kind: dns#resourceRecordSet
  name: test.
  rrdatas:
  - '"ASDFASDF"'
  ttl: 30
  type: TXT

我正在通过 Node 的 child_process 执行此操作,但即使我直接从 bash 执行它也会遇到问题,因此 Node 目前并不是真正有意义的问题。我试过回显这个值。我试过设置一个环境变量并在字符串中使用它。

无论我做什么,我都会收到如下错误:

ERROR: (gcloud.dns.record-sets.transaction.add) unrecognized arguments: -E_ASDFSDF

【问题讨论】:

  • 对于TXT资源记录数据,连字符是合法的。但是,CLI 将以连字符开头的 rrdata 解释为命令行选项。我的建议是使用 Google Cloud Console 或中止 Let's Encrypt 并在它要求您创建以连字符开头的 rrdata 时重新开始。 Google Cloud Console DNS 服务器 UI 允许以连字符开头的 rrdata。考虑打开一个错误报告:cloud.google.com/support/docs/issue-trackers
  • 已创建问题...我将根据结果进行回复。 issuetracker.google.com/issues/193054503.

标签: bash gcloud lets-encrypt


【解决方案1】:

原来有些字符需要在 CLI 中转义。我可以确认以下工作:

gcloud dns --project=myprojectid record-sets transaction add "\-test123" --name=test.mydomain.com. --ttl=300 --type=TXT --zone=myzoneid

【讨论】:

    猜你喜欢
    • 2011-05-16
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2019-10-29
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    相关资源
    最近更新 更多