Jinja2 使用键访问最后一个变量
Jinja2 access last variable with key
我有以下字典
myarr:
- name: test1
- name: test2
- name: test3
在我的 ansible 中,我想做以下事情:
lineinfile: dest=testfile line="var = {{myarr|last ['name']}}"
但是,我不知道如何访问最后一个变量然后使用 name
键。我无法修改我的字典。
我尝试了各种选项,试图使用 last
、map
、attr
和类似的过滤器在一行中完成,但都失败了。
但是使用中间变量是可行的(使用 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"
}
我有以下字典
myarr:
- name: test1
- name: test2
- name: test3
在我的 ansible 中,我想做以下事情:
lineinfile: dest=testfile line="var = {{myarr|last ['name']}}"
但是,我不知道如何访问最后一个变量然后使用 name
键。我无法修改我的字典。
我尝试了各种选项,试图使用 last
、map
、attr
和类似的过滤器在一行中完成,但都失败了。
但是使用中间变量是可行的(使用 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"
}