0

我正在尝试将蓝图输入作为环境变量传递给 python 脚本(在节点的生命周期操作之一期间由 script_plugin 执行)。

我们正在使用 Cloudify 3.1。我的蓝图如下所示(修剪它以显示所需的部分):

inputs:
  sql_server_username:
    type: string
    default: ''
    description: >
      Enter SQL Server User Name

node_templates:  
  my_install:
      type: my.nodes.Root
      relationships:
        - target: win2012r2
          type: cloudify.relationships. contained_in
      interfaces:
        cloudify.interfaces.lifecycle:
          start:
            implementation: scripts/my/installer.py
            inputs:
                process:
                    env:
                        SQL_USERNAME: { get_input: sql_server_username }

在我的 python 脚本(installer.py)中,我试图SQL_USERNAME使用os.environ.get("SQL_USERNAME", "DEFAULT"). 但即使我在部署期间通过输入传递自定义值,我也总是得到默认值,

我应该改变什么才能在脚本中访问输入参数作为环境变量(来自蓝图的输入部分)?

4

1 回答 1

0

花了将近 24 小时后,发现如果脚本是 python 脚本并且 eval_script 在 Process 配置选项中未设置为 false,则不会注入环境变量(至少对于 v 3.1)。

感谢丹·基尔曼。下面的片段来自 Ref# https://groups.google.com/d/msg/cloudify-users/mEAI9x9ivXQ/39Rg6KgKP4cJ

它们确实没有作为环境变量公开,而是通过将它们放在顶级输入而不是嵌套的 env.process 中,然后执行类似的操作,可以很容易地作为输入使用

from cloudify.state import ctx_parameters as inputs

之后,您可以像这样访问这些

# 在这种情况下,输入只是一个加糖的字典,它允许像顶级键属性一样访问操作输入 # 你也可以这样做inputs['LOAD_BALANCER_IP'] ``ctx.logger.info(inputs.LOAD_BALANCER_IP)

希望这在文档中明确说明..

于 2016-01-14T22:23:38.200 回答