default value for dictionary in jinja2 (ansible)

后端 未结 1 1512
我在风中等你
我在风中等你 2021-01-01 21:21

jinja2 has filter \'|default()\' to works with undefined variables. But it does not work with dictionary values.

if D may have or not have key foo (D[foo]), than:

相关标签:
1条回答
  • 2021-01-01 21:56

    This appears to be working properly for me using Ansible 1.7.2. Here's a test playbook I just wrote:

    ---
    - hosts: localhost
      vars:
        D:
         1 : "one"
         2 : "two"
      tasks:
          - debug: var=D
    
          - debug: msg="D[1] is {{ D[1]|default ('undefined') }}"
    
          - debug: msg="D[3] is {{ D[3]|default ('undefined') }}"
    

    And here is the output from running it:

    TASK: [debug var=D] ***********************************************************
    ok: [localhost] => {
        "D": {
            "1": "one",
            "2": "two"
        }
    }
    
    TASK: [debug msg="D[1] is one"] ***********************************************
    ok: [localhost] => {
        "msg": "D[1] is one"
    }
    
    TASK: [debug msg="D[3] is undefined"] *****************************************
    ok: [localhost] => {
        "msg": "D[3] is undefined"
    }
    
    0 讨论(0)
提交回复
热议问题