从json文件中创建gcloud配置



我已经下载了我的gcloud配置作为json(与gcloud配置配置列表——format=json)。然后我从返回的集合中挑选了一个配置,并更新了我想要的json中的所有功能/标志,并保存为文件。现在我想用这个更新的JSON文件创建一个新的配置,我该怎么做呢?提前感谢!

请彻底测试;改进欢迎

要求:jq

  • filter by (configuration)name=="foo"
  • .properties对象转换为数组{"key":.., "value":[...]}
  • 映射到{"section":...,"properties"...}将值转换为数组并过滤null
  • 映射结果{"section":...,"properties":{"key":...,"value":...}
  • 转换成gcloud config set {section}/${properties[key]} ${properties[value]}
  • 将数组作为字符串列表返回

注意应该有一种方法可以用单个map来做到这一点:捕获section值,然后为每个属性键:值对(其中value !=null)发出gcloud config set命令

FILTER='.[]
|select(.name=="foo")
|.properties|to_entries
|map(
{
"section": .key,
"properties":.value|to_entries|.[]|select(.value!=null)
}
)
|map(
"gcloud config set "+.section+"/"+.properties["key"]+" "+.properties["value"]
)
|.[]'
# Or cat /path/to/your/saved.json
gcloud config configurations list --format=json 
| jq -r "${FILTER}"

示例:https://jqplay.org/s/ZO_6urQma8

您可以将输出管道放入脚本中,并在运行之前检查脚本。

我假设您在一个类unix机器上,并且您的配置存储在~/.config/gcloud/configurations中。

我还假设您通过运行类似于以下的代码创建了原始JSON输出,然后在适当的位置编辑文件:

gcloud config configurations activate SOME_CONFIG
gcloud config list --format=json > newconfig.json

首先,创建想要填充的新配置:

gcloud config configurations create newconfig

您可以通过运行

确认该文件已创建:
ls ~/.config/gcloud/configurations/config_newconfig

接下来,使用这个隐藏命令将JSON文件转换为配置格式,并覆盖配置文件:

gcloud meta list-from-json newconfig.json --format=config > ~/.config/gcloud/configurations/config_newconfig

您可以通过运行

来确认事情是否如预期的那样。
gcloud config configurations activate newconfig
gcloud config list

相关内容

  • 没有找到相关文章

最新更新