Ansible检查UIDS

时间:2017-10-27 15:47:47

标签: ansible jinja2

我有一个我想要使用的脚本,基本上检查/ 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模块吗?

1 个答案:

答案 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/