我想从刚刚设置的另一个变量中检索变量。
- 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 }} ]}}
设置时是否可以从另一个变量中检索?
您有两个问题。
首先,您永远不会嵌套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')] }}"