附加到ansible

时间:2017-11-07 15:31:13

标签: arrays json ansible

我按照thread跟随将变量附加到Ansible的列表中;我使用逻辑my_group: {{my_group + [item.hostname]}}

- name: "Initialize variables"
  set_fact:
      my_group: []

- set_fact:
      my_group:
        "{% if item.hostGroup == "webgroup" %}
           {{my_group + [item.hostname]}}
        {% endif %}"
  with_items: "{{serverList}}"

我的serverList有效负载看起来像

{
    "hostGroup": "dbgroup", 
    "hostname": "db_server_usa_01" 
}, 
{
    "hostGroup": "webgroup", 
    "hostname": "web_server_usa_01" 
}

得到如下错误

"Unexpected templating type error occurred on 
({% if item.hostGroup == 'webgroup' %} {{my_group + [item.hostname]}} 
{% endif %}): coercing to Unicode: need string or buffer, list found"}

如果没有if循环,它会完美运行。知道如何使用if循环来完成这项工作吗?

1 个答案:

答案 0 :(得分:2)

这看起来不会更好吗?

- name: "Initialize variables"
  set_fact:
      my_group: "{{ serverList | selectattr('hostGroup','equalto','webgroup') | map(attribute='hostname') | list }}"