我有一个yaml模板(让我们称之为main.yaml),它调用另一个yaml模板,如下所示。 VM1.yaml模板是一个创建另一个堆栈的普通模板。 (它将像一个嵌套模板)
main.yaml
resources:
VM1:
type: OS::Heat::Stack
properties:
template: {get_file: vm/VM1.yaml}
parameters:
name: { list_join: ["_", [ { get_param: 'OS::stack_name' }, "VM1"]] }
以下是文件夹结构
vm / parameter.yaml =>这是一个参数文件,我传递参数。
template_file = 'MAIN_VM1_MOUNTED.yaml'
template = open(template_file, 'r')
stack_name = 'HeenaStack' + sys.argv[5]
heat_parameters = open('vm/parameter.yaml')
temp_params = yaml.load(heat_parameters)
heat_parameters.close()
try:
#hc.stacks.create(stack_name=stack_name, template=template.read(), parameters=temp_params["parameters"])
stackCreate = hc.stacks.create(stack_name=stack_name, template=template.read(), parameters=temp_params["parameters"])
print("Stack Created successfully", "Stack ID:", str(hc.stacks.get(stack_name).id))
当我运行openstack stack使用这个嵌套的yaml模板创建时,堆栈会成功创建。 python中也没有发生同样的情况。 我收到了以下错误。
Bad request : {'explanation': 'The server could not comply with the request since it is either malformed or otherwise incorrect.', 'code': 400, 'error': {'message': 'Property error: : resources.VM1.properties.template: : No content found in the "files" section for get_file path: C:/Users/xxx/PycharmProjects/xxx/vm/VM1.yaml', 'traceback': None, 'type': 'StackValidationFailed'}, 'title': 'Bad Request'
我不明白我需要做什么。
答案 0 :(得分:0)
使用文件解决它,template = template_utils.process_template_path(template_file)