我正在学习ansible,我想知道如何迭代shell命令的结果。这是我尝试过的。我有这本剧本:
[root@d61311ae17e2 /]# cat loop.yaml
---
- name: Loop Example
hosts: localhost
tasks:
- name:
command: cat /vcs.txt
register: vcs
- name: Nonsense to demo loop
template:
src: /foo.j2
dest: /foo.{{ item.1 }}
with_indexed_items: "{{ vcs }}"
/vcs.txt文件包含以下内容:
[root@d61311ae17e2 /]# cat vcs.txt
vc-one
vc-two
vc-three
vc-four
我希望会发生的是创建四个文件:foo.vc-one,foo.vc-two,foo.vc-three和foo.vc-four。但是当我运行ansible-playbook loop.yaml
时发生的事情是这样的:
PLAY [Loop Example] *********************************************************************************************************************************************
TASK [Gathering Facts] ******************************************************************************************************************************************
ok: [127.0.0.1]
TASK [command] **************************************************************************************************************************************************
changed: [127.0.0.1]
TASK [Nonsense to demo loop] ************************************************************************************************************************************
fatal: [127.0.0.1]: FAILED! => {"msg": "with_indexed_items expects a list"}
to retry, use: --limit @/loop.retry
PLAY RECAP ******************************************************************************************************************************************************
127.0.0.1 : ok=2 changed=1 unreachable=0 failed=1
答案 0 :(得分:0)
我需要这样做with_indexed_items: "{{ vcs.stdout.split('\n')}}"