Jinja2 使用键访问最后一个变量

Jinja2 access last variable with key

我有以下字典

myarr:
  - name: test1
  - name: test2
  - name: test3

在我的 ansible 中,我想做以下事情:

lineinfile: dest=testfile line="var = {{myarr|last ['name']}}"

但是,我不知道如何访问最后一个变量然后使用 name 键。我无法修改我的字典。

我尝试了各种选项,试图使用 lastmapattr 和类似的过滤器在一行中完成,但都失败了。

但是使用中间变量是可行的(使用 ansible 2.0.1.0):

group_vars/all.yml:

myarr:
  - name: test1
  - name: test2
  - name: test3

play.yml:

---
- hosts: localhost
  vars:
    - lastarr: "{{myarr|last}}"
  tasks:
    - debug:
        msg: "var = {{lastarr['name']}}"

$ ansible-playbook -i localhost, play.yml:

PLAY [localhost] ***************************************************************

TASK [debug] *******************************************************************
ok: [localhost] => {
    "msg": "var = test3"
}

PLAY RECAP *********************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=0

只需使用括号

var = {{(myarr|last)['name']}}

playbook.yml

---
- hosts: localhost
  vars:
      myarr:
        - name: test1
        - name: test2
        - name: test3
  tasks:
    - debug:
        msg: "var = {{(myarr|last)['name']}}"

$ ansible-playbook playbook.yml

PLAY ***************************************************************************

TASK [setup] *******************************************************************
ok: [localhost]

TASK [debug] *******************************************************************
ok: [localhost] => {
    "msg": "var = test3"
}