![Ansible:如何记录远程服务器上执行的更改?](https://linux22.com/image/786705/Ansible%EF%BC%9A%E5%A6%82%E4%BD%95%E8%AE%B0%E5%BD%95%E8%BF%9C%E7%A8%8B%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E6%89%A7%E8%A1%8C%E7%9A%84%E6%9B%B4%E6%94%B9%EF%BC%9F.png)
Ansible:如何记录远程服务器上执行的更改?
Ansible 可以显示和日志所进行的更改(包括文件差异)本地在控制节点上例如
TASK [example_task : file mode] ************************************************
--- before
+++ after
@@ -1,4 +1,4 @@
{
- "mode": "0640",
+ "mode": "0600",
"path": "/tmp/foo"
}
changed: [example.com]
在管理节点上,调用的模块记录其名称和参数,例如
ansible-ansible.legacy.stat[18949]: Invoked with path=/home/admin-tkolb/.gitconfig follow=False get_checksum=True checksum_algorithm=sha1 get_md5=False get_mime=True get_attributes=True`
如何记录更改(例如文件差异和执行的命令)在受管节点上?
答案1
我理解您喜欢在远程/托管节点上使用分布式日志记录。这可以且需要在剧本本身内实现,请参阅示例从 Ansible 剧本中生成日志文件...
分布式日志
假设日志目录(即/var/log/ansible
)存在,并且在远程节点上给出了必要的权限。此外,对于此示例,gather_facts: true
和 执行路径已定义(即 通过ROLE: "{{ playbook_dir.split('/')[2] }}"
)。
- name: "Log applying role {{ ROLE }} with tags {{ ansible_run_tags }}"
lineinfile:
path: "/var/log/ansible/{{ ROLE }}/last.{{ ansible_date_time.year }}{{ ansible_date_time.month }}{{ ansible_date_time.day }}.log"
create: yes
line: "{{ ansible_date_time.weekday }} {{ ansible_date_time.month }} {{ ansible_date_time.day }} {{ ansible_date_time.time }} {{ ansible_date_time.tz }} {{ ansible_date_time.year }}, {{ ansible_run_tags }}, {{ ansible_user }}"
如果在剧本中将其作为最后一项任务提供,则如果执行之前没有失败,它将在远程节点上写入日志条目。通过这样做,可以获取有关远程节点的信息,包括角色、剧本、任务等的应用位置、时间和应用者等。
在您的案例中,您需要采用该方法并根据您的需要进行修改和增强。只需使用参数调整要记录的信息line
即可。您可能会有一些任务返回值包括并可能进一步