部署管理器:无法通过python模板公开输出

时间:2018-03-23 10:15:57

标签: python google-deployment-manager

我在python中创建了一个Deployment Manager模板,它在运行时生成资源名称,以便在google云平台上创建具有相同模板的多个部署。成功部署后,我需要通过输出公开Web服务器的外部IP地址。我在我的python模板中添加了以下内容:

def GenerateConfig(context):
    outputs = []
    resources = [
        {   
    }       ]
    outputs.append({'name': name, 
                    'value': value})

return {'resources': resources, 'outputs': outputs}

问题是,输出没有显示在控制台上,但是,我可以在部署布局中看到它。

2 个答案:

答案 0 :(得分:0)

您显示的配置似乎适合我,我认为没有理由不在控制台中显示它。也许你可以考虑这里解释的类似实现

答案 1 :(得分:0)

我花了一点时间才弄清楚这一点。为了将输出显示在控制台上,您需要在模式文件中包含输出。因此,如果您的模板名为template.py并且看起来像:

from lib.helper import Helper

def GenerateConfig(context):
  outputs = []
  resources = [
    {
      "name": "resource-1",
      "type": "resource.py"
    }
  ]
  outputs.append({'name': "myField", 
                  'value': "$(ref.resource-1.someValue)"})
  outputs.append({'name': "myOtherField", 
                  'value': "$(ref.resource-1.someOtherValue)"})

  return {'resources': resources, 'outputs': outputs}

您将拥有一个名为template.py.schema的架构文件,其内容为:

imports:
- path: "lib/helper.py"
- path: "templates/resource.py"
  name: "resource.py"

outputs:
  myField:
  myOtherField:

已经很晚了,但我希望这对某人有帮助!

奖金提示:,当使用Python文件作为模板时,您必须使用架构文件来指定包含文件(甚至是库!),如上例所示。

参考: Exposing Information Using Outputs