【问题标题】:Edit DNS records with gcloud by reading/piping from file通过从文件中读取/管道来使用 gcloud 编辑 DNS 记录
【发布时间】:2014-08-11 23:17:56
【问题描述】:

我可以使用 gcloud 工具通过使用以下命令从 vi/mate 交互式编辑 JSON 文件来编辑 DNS 记录:

gcloud dns records --zone=myzone edit

但是,我希望能够进行批量更新,如下所示:

gcloud dns records --zone=myzone edit < my-additional-records.txt

...my-additional-records.txt 包含我要添加的 DNS 记录。

我认为编辑的JSON文件包含DNS记录的添加和删除并不是那么简单。因此,任何提示将不胜感激。

【问题讨论】:

    标签: dns gcloud google-cloud-dns


    【解决方案1】:

    我认为您可以尝试像这样使用 linux 行编辑器“ed”:

    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

    【讨论】:

      【解决方案2】:

      自从提出这个问题以来,自gcloud dns ... 以来提供此新答案已得到显着改进。现在有两种方法可以编辑记录集。

      1. 使用导出/导入命令如下:

        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
        

        Import 也接受--zone-file-format。如果您只想添加/编辑一些记录而不是全部,您可以省略--delete-all-existing 标志。

      2. 使用事务命令组如下:

        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
        

      【讨论】:

        【解决方案3】:

        我自己没有尝试过,但如果 JSON 格式是这里的格式: https://developers.google.com/cloud-dns/getting-started

        设置deletions : [](空 JSON 数组)怎么样。 那不会达到你想要的(没有删除)吗?这是否以某种方式失败?

        更新 1:

        如果问题是程序的实际管道输入,而您找不到基于 shell 的方法,我找到了this migration script,它显示了如何编写此操作的脚本(使用 python)。

        【讨论】:

          猜你喜欢
          • 2018-07-22
          • 1970-01-01
          • 2020-08-28
          • 2017-04-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-28
          • 1970-01-01
          相关资源
          最近更新 更多