Ansible:如何记录远程服务器上执行的更改?

Ansible:如何记录远程服务器上执行的更改?

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即可。您可能会有一些任务返回值包括并可能进一步

相关内容