我正在尝试通过复制到单个主机的文件来审核系统。默认输出非常详细。我只想查看Ansible日志输出的相关字段;这样,超过1000个主机,我可以更快地解决问题。 。当我的游戏成功后,我只想看看:
ok: u'/mnt/inventory/hostname999'
我有一本类似的剧本:
- hosts: 'localhost'
name: Playbook for the Audit for our infrastructure.
gather_facts: False
become: no
connection: local
roles:
- { role: network, tags: network }
我的网络角色main.xml文件如下所示:
---
- name: find matching pattern files
find:
paths: "/mnt/inventory"
patterns: "hostname*"
file_type: directory
register: subdirs
- name: check files for net.ipv4.ip_forward = 0
no_log: False
lineinfile:
name: "{{ item.path }}/sysctl.conf"
line: "net.ipv4.ip_forward = 0"
state: present
with_items: "{{ subdirs.files }}"
register: conf
check_mode: yes
failed_when: (conf is changed) or (conf is failed)
- debug:
msg: "CONF OUTPUT: {{ conf }}"
但是我得到这样的日志输出:
ok: [localhost] => (item={u'uid': 0, u'woth': False, u'mtime': 1546922126.0,
u'inode': 773404, u'isgid': False, u'size': 4096, u'roth': True, u'isuid':
False, u'isreg': False, u'pw_name': u'root', u'gid': 0, u'ischr': False,
u'wusr': False, u'xoth': True, u'rusr': True, u'nlink': 12, u'issock':
False, u'rgrp': True, u'gr_name': u'root', u'path':
u'/mnt/inventory/hostname999', u'xusr': True, u'atime': 1546930801.0,
u'isdir': True, u'ctime': 1546922126.0, u'wgrp': False, u'xgrp': True,
u'dev': 51, u'isblk': False, u'isfifo': False, u'mode': u'0555', u'islnk':
False})
此外,我的CONF OUTPUT调试消息从不显示,我也不知道为什么不这样做。
我已经阅读了https://github.com/ansible/ansible/issues/5564和其他文章,但它们似乎只是指向诸如shell命令之类的东西,这些东西将东西发送到stdout,而lineinfile则没有。
答案 0 :(得分:0)
但是我得到这样的日志输出:
那么您可能想将loop_control:
与一个label: "{{ item.path }}"
的孩子一起使用:
- lineinfile:
# as before
with_items: "{{ subdirs.files }}"
loop_control:
label: "{{ item.path }}"
这将使您更接近想要的东西:
ok: [localhost] => (item=/mnt/inventory/hostname999)
此外,我的CONF OUTPUT调试消息从不显示,我也不知道为什么不这样做。
我对此的最佳猜测是,可能需要调整详细程度:
- debug:
msg: "CONF OUTPUT: {{ conf }}"
verbosity: 0
但是它对我有用,所以也许您的ansible设置还有其他特别之处。我想尝试verbosity:
看看是否有帮助。鉴于您实际使用的是msg:
,将conf
直接传递给debug
可能会更快乐:
- debug:
var: conf
因为它将使很多更好,因为ansible知道它是dict
,而不是仅仅有效地调用str(conf)
(如您在上面看到的那样),它的格式不太好