ansible寄存器与循环调试打印无法正常工作

时间:2016-03-23 09:32:02

标签: 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

当我执行此操作时,我得到了很多我不想要的信息加上我最想要的item.stdout_lines信息。 如何更好地查看我的命令输出?

1 个答案:

答案 0 :(得分:1)

对于在循环中调用的模块(包括debug)(即with_items),将显示每次迭代时item的值。我不知道如何解决这个问题。如果你想减少你的输出,你可以尝试切换到使用带有jinja模板字符串的debug module的msg参数。你可以做这样的事情显然调整正则表达式以匹配systemctl输出。

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

如果您不想使用replace_regex函数,可以考虑编写自己的filter plugin来按照您喜欢的方式格式化数据。

一般情况下,ansible playbooks不是显示通过注册变量,事实等收集的状态信息的好地方。剧本输出更适合任务状态。