我有一个我想要使用的脚本,基本上检查/ etc / passwd中的UID和特定UID的greps,将其结果报告给一个文件然后发送回我的PC。按预期工作,但我试图微调它。以下是我到目前为止的情况:
- name: Checking to Make Sure the UIDS are safe for foo Users
shell: cat /etc/passwd | awk -F ':' '{print $3}' | grep 150[0-1]
register: foo
- local_action: copy content={{ ansible_hostname.split('\n') }};{{ foo.stdout }} dest=/Users/blah/playbooks/roles/check_user_uids/files/foo_stdout.log
以下是我在日志文件中看到的内容:
[u'server-one'];1500
1501
我真正想要做的事情是:
[u'server-one'] 1500
[u'server-one'] 1501
有人能告诉我一个如何使用JinJa模板做到这一点的例子,或建议是否可以使用local_action模块吗?
答案 0 :(得分:1)
http://docs.ansible.com/ansible/latest/common_return_values.html#stdout-lines
如果调试变量foo
,您将看到包含输出列表的返回值foo.stdout_lines
。您可以在当前任务中迭代它。
- local_action: copy content={{ ansible_hostname.split('\n') }};{{ item }} dest=/Users/blah/playbooks/roles/check_user_uids/files/foo_stdout.log
with_items: "{{ foo.stdout_lines }}"
或者你可以使用模板模块的返回值来实现同样的目的。查看Ansible和Jinja的文档以获取更多信息。
http://docs.ansible.com/ansible/latest/playbooks_templating.html http://jinja.pocoo.org/docs/2.9/templates/