循环调试打印不工作的ansible寄存器

循环调试打印不工作的ansible寄存器,ansible,ansible-playbook,ansible-2.x,Ansible,Ansible Playbook,Ansible 2.x,我有一个简单的剧本,用来显示我的服务状态。我想查看机器的输出,看看状态是否处于活动状态。所以我使用了调试打印,如下所示: - name: name_of_services shell: systemctl status {{item}} with_items: - service1 - service2 register: out - debug: var=item.stdout_lines with_items: out.results 当我执行此操作时,我得到

我有一个简单的剧本,用来显示我的服务状态。我想查看机器的输出,看看状态是否处于活动状态。所以我使用了调试打印,如下所示:

- name: name_of_services
  shell: systemctl status {{item}}
  with_items:
   - service1
   - service2
  register: out

- debug: var=item.stdout_lines
  with_items: out.results
当我执行此操作时,我得到了很多我不想要的信息,加上最后我想要的item.stdout\u行信息。
如何才能更好地查看我的命令的输出?

对于在循环中调用的模块,包括调试(即带有_项),每次迭代时都会显示项的值。我不知道有什么办法能把它关掉。如果希望减少输出,可以尝试切换到使用msg参数,以获取jinja模板字符串。显然,您可以这样做,调整正则表达式以匹配systemctl输出

- name: show values
  debug: msg="{{ item.stdout_lines | replace_regex('^(.*).service.*Active: (.*).$', \\\1 \\\2) }}"
  with_items: out.results

如果你不想使用RePosieReGEX函数,你可以考虑编写自己的数据格式。p>


一般来说,ansible playbook不是一个显示通过寄存器变量、事实等收集的状态信息的好地方。playbook输出更倾向于任务状态。

Try loop\u control.label。请看这里: