如何在GCP Deployment Manager中覆盖Deployment包默认配置
解决方法
- 第一步:修改WURFL部署包的上层Jinja模板
你在test_config.yaml中传入的networks参数没有生效,核心原因是解压得到的wurfl-microservice-basic.jinja外层模板,没有把你传入的网络参数透传给下层创建VM的子模板。
打开wurfl-microservice-basic.jinja文件,找到其中定义wurfl-vm资源的代码块,在子模板的properties配置中添加networks参数的透传逻辑,示例修改如下:
# 原VM资源定义 { 'name': 'wurfl-vm', 'type': 'vm_instance.py', 'properties': { 'zone': properties['zone'], # 新增这一行,透传外层传入的networks参数,默认值保留default 'networks': properties.get('networks', ['default']), # 其他原有配置保持不变 ... } }
如果你的VPC是自定义子网模式,还需要同时透传subnetworks参数,和networks一一对应,参数值为目标可用区对应的子网名称:
'subnetworks': properties.get('subnetworks', ['default']),
同时在你的test_config.yaml中补充子网配置:
properties: zone: europe-west2-a networks: - mynetwork subnetworks: - mynetwork-subnet-euwest2 # 替换为你对应区域的子网名称
如果使用的是共享VPC,或者模板要求传入完整资源路径,可将网络、子网的值替换为完整URL,格式参考:https://www.googleapis.com/compute/v1/projects/你的项目ID/global/networks/mynetwork
之前修改vm_instance.py.schema无效的原因:该文件只是参数的校验和说明文件,不会直接控制模板的实际赋值逻辑,模板中硬编码的默认值优先级高于schema的默认配置,因此直接修改schema不会生效。
- 第二步:重新执行部署命令
修改完模板文件后,重新运行原有部署命令即可:
gcloud deployment-manager deployments create \ wurfl \ --project xxxxxxx \ --config test_config.yaml
内容的提问来源于stack exchange,提问作者jamiet
相关产品推荐
相关产品推荐

