从另一个中检索变量

问题描述 投票:0回答:1

我想从刚刚设置的另一个变量中检索变量。

- set_fact:
    app_env: "{{ app_env | default('prod') }}"
    app_url: "{{ app_global_var_urls[ {{ app_env }} }}"

- name: "Check facts"
  debug:
    msg: "{{ app_env }} {{ app_url }}"

我尝试了以下方法

{{ app_global_var_urls[ {{ app_env }} }}

{{ app_global_var_urls.app_env }} }}

{{ app_global_var_urls.[ {{ app_env }} ]}}

设置时是否可以从另一个变量中检索?

ansible ansible-inventory ansible-facts
1个回答
1
投票

您有两个问题。

首先,您永远不会嵌套Jinja模板标记({{...}})。如果您已经在Jinja模板上下文中,则只需按名称引用变量即可。

第二,使用set_fact创建的变量在set_fact任务完成运行后才可用。换句话说,在set_fact任务中,您不能引用要在该任务中创建的变量。]​​>

您需要重写剧本以使用两个单独的set_fact任务:

- set_fact:
    app_env: "{{ app_env | default('prod') }}"

- set_fact:
    app_url: "{{ app_global_var_urls[ app_env ] }}"

或执行类似操作:

- set_fact:
    app_env: "{{ app_env | default('prod') }}"
    app_url: "{{ app_global_var_urls[app_env | default('prod')] }}"
© www.soinside.com 2019 - 2024. All rights reserved.