3

我在 python 中创建了一个部署管理器模板,它在运行时生成资源名称,以便在谷歌云平台上使用相同的模板创建多个部署。部署成功后,我需要通过输出暴露 Web 服务器的外部 IP 地址。我在我的 python 模板中添加了以下内容:

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

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

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

4

2 回答 2

2

我花了一点时间才弄清楚这一点。为了让您的输出显示在控制台上,您需要在架构文件中包含输出。因此,如果您的模板被命名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 文件作为模板时,您必须使用模式文件来指定您的包含(甚至是库!),如上面的示例所示。

参考: 使用输出公开信息

于 2018-09-28T12:11:48.573 回答
0

您显示的配置对我来说似乎很合适,我认为没有理由不应该在控制台中显示它。也许您可以考虑此处解释的类似实现

于 2018-04-11T17:35:19.843 回答