Ansible 自引用对象(字段是另一个对象的结果)Jinja

Ansible 自引用对象(字段是另一个对象的结果)Jinja,ansible,jinja2,templating,Ansible,Jinja2,Templating,大家好,D 我试图创建一个对象,其中一个字段依赖于另一个字段,想象一下组中的\u vars/all文件是这样的: people_names: - first_name: tom last_name: hardy full_name: " {{ first_name}} {{ last_name}} " {% for person in people_names %} person_full_name = person.full_name {% endfor %} 这项任务非常简

大家好,D

我试图创建一个对象,其中一个字段依赖于另一个字段,想象一下组中的\u vars/all文件是这样的:

people_names:
 - first_name: tom
   last_name: hardy
   full_name: " {{ first_name}} {{ last_name}} "
{% for person in people_names %}
person_full_name = person.full_name
{% endfor %}
这项任务非常简单(我正在调试)

test.j2类似于:

people_names:
 - first_name: tom
   last_name: hardy
   full_name: " {{ first_name}} {{ last_name}} "
{% for person in people_names %}
person_full_name = person.full_name
{% endfor %}
这在Ansible/Jinja中是否可能

要构建此文件,我将运行以下命令:

ansible-playbook jinja2test.yml --check --diff --connection=local
如果您需要更多信息,请随时询问并提前感谢:D

编辑: 当我运行此命令时,我得到姓氏的AnsibleUndefinedVariable

Q:“创建一个对象,其中一个字段依赖于另一个字段。”

不可能。例如,见。如果需要的话,用全名创建字典。比如说

  vars:
    people_names:
      - first_name: tom
        last_name: hardy
  tasks:
    - set_fact:
        people_full_names: "{{ people_full_names|default([]) +
                               [item|combine({'full_name': full_name})] }}"
      loop: "{{ people_names }}"
      vars:
        full_name: "{{item.first_name}} {{ item.last_name }}"

    - debug:
        var: people_full_names
给予