set_fact中的角色称为循环

时间:2018-09-20 12:52:15

标签: ansible

我想做的是用include_role多次调用with_items的角色。像这样:

- include_role:
    name: my_role
  with_items: "{{ list }}"
  loop_control:
    loop_var: struct

然后在角色中,我必须保存命令的输出。但是,由于这是一个循环,我如何保存输出而不会被覆盖?我认为我正在错误地解决问题

1 个答案:

答案 0 :(得分:1)

一个选项是将输出附加到列表。例如角色任务

- command: date
  register: myoutput
- set_fact:
    log: "{{ log + [myoutput.stdout] }}"
- debug:
    msg: "{{ log }}"

和play.yml

- hosts:
    - localhost
  vars:
    log: []
    list: [1,2]
  tasks:
    - include_role: name=role
      loop: "{{ list }}"
      loop_control:
        loop_var: struct

# ansible-playbook play.yml | grep -A 3 msg
    "msg": [
        "Sat Sep 22 19:52:38 CEST 2018"
    ]
}
--
    "msg": [
        "Sat Sep 22 19:52:38 CEST 2018", 
        "Sat Sep 22 19:52:40 CEST 2018"
    ]