This commit is contained in:
Mike McFetridge
2026-07-20 09:23:17 -04:00
parent c1315882da
commit 72272e4006
3179 changed files with 562960 additions and 14 deletions
@@ -0,0 +1,72 @@
---
- name: Docker disk usage report
hosts: all
become: true
gather_facts: false
vars:
report_root: "/opt/docker-reports"
report_timestamp: "{{ lookup('pipe', 'date +%Y%m%d-%H%M%S') }}"
report_file_name: "docker_disk_usage_<< inventory_hostname >>_<< report_timestamp >>.txt"
tasks:
- name: Ensure report root exists
ansible.builtin.file:
path: "<< report_root >>"
state: directory
mode: "0750"
- name: Collect docker system df summary
ansible.builtin.command: docker system df
register: docker_df_summary
changed_when: false
- name: Collect docker system df verbose report
ansible.builtin.command: docker system df -v
register: docker_df_verbose
changed_when: false
when: include_verbose_report | default(false)
- name: Build report body
ansible.builtin.set_fact:
docker_disk_usage_report_body: |
Host: << inventory_hostname >>
Timestamp: {{ lookup('pipe', 'date -u +%Y-%m-%dT%H:%M:%SZ') }}
Docker system df:
<< docker_df_summary.stdout >>
<%- if include_verbose_report | default(false) %>
Docker system df -v:
<< docker_df_verbose.stdout >>
<%- endif %>
- name: Save local disk usage report
ansible.builtin.copy:
dest: "<< report_root >>/<< report_file_name >>"
content: "<< docker_disk_usage_report_body >>"
mode: "0640"
- name: Build Discord report content
ansible.builtin.set_fact:
discord_disk_report_content: |
<< discord_message_prefix | default('Docker Disk Usage Report') >>
```text
<< docker_disk_usage_report_body | truncate(1700, true, '...') >>
```
when:
- discord_enabled | default(false)
- (discord_webhook_url | default('')) | length > 0
- name: Send disk usage report to Discord webhook
ansible.builtin.uri:
url: "<< discord_webhook_url | default('') >>"
method: POST
body_format: json
body:
username: "<< discord_username | default('Docker Reporter') >>"
content: "<< discord_disk_report_content >>"
status_code: 204
when:
- discord_enabled | default(false)
- (discord_webhook_url | default('')) | length > 0
@@ -0,0 +1,148 @@
{
"slug": "docker-disk-usage-report",
"kind": "ansible",
"metadata": {
"name": "Docker Disk Usage Report",
"description": "Generates a Docker disk usage report on target hosts and optionally sends a summary to Discord via webhook.",
"tags": [
"docker",
"report",
"disk",
"monitoring"
],
"icon": {
"provider": "mdi",
"id": "chart-box",
"color": "blue"
},
"draft": true,
"version": {
"name": "1",
"source_dep_name": "manual/docker-disk-usage-report"
}
},
"variables": [
{
"title": "Report",
"name": "report",
"items": [
{
"name": "include_verbose_report",
"type": "bool",
"title": "Verbose Report",
"required": false,
"default": false,
"description": "Include docker system df -v output in local report"
}
]
},
{
"title": "Discord Webhook",
"name": "discord",
"items": [
{
"name": "discord_enabled",
"type": "bool",
"title": "Discord",
"required": false,
"default": false,
"description": "Send a short report to Discord webhook"
},
{
"name": "discord_webhook_url",
"type": "str",
"title": "Discord Webhook URL",
"required": false,
"default": ""
},
{
"name": "discord_username",
"type": "str",
"title": "Discord Username",
"required": false,
"default": "Docker Reporter",
"description": "Sender name for webhook message",
"config": {
"placeholder": "Docker Reporter"
}
},
{
"name": "discord_message_prefix",
"type": "str",
"title": "Discord Message Prefix",
"required": false,
"default": "Docker Disk Usage Report",
"description": "Prefix line sent before report content",
"config": {
"placeholder": "Docker Disk Usage Report"
}
}
]
},
{
"title": "Internal",
"name": "internal",
"items": [
{
"name": "docker_df_verbose",
"type": "str",
"title": "Docker DF Verbose",
"required": false,
"default": ""
},
{
"name": "report_file_name",
"type": "str",
"title": "Report File Name",
"required": false,
"default": ""
},
{
"name": "report_root",
"type": "str",
"title": "Report Root",
"required": false,
"default": "/reports",
"config": {
"placeholder": "/reports"
}
},
{
"name": "docker_disk_usage_report_body",
"type": "str",
"title": "Report Body",
"required": false,
"default": ""
},
{
"name": "discord_disk_report_content",
"type": "str",
"title": "Discord Report",
"required": false,
"default": ""
},
{
"name": "inventory_hostname",
"type": "str",
"title": "Inventory Hostname",
"required": false,
"default": ""
},
{
"name": "report_timestamp",
"type": "str",
"title": "Report Timestamp",
"required": false,
"default": ""
},
{
"name": "docker_df_summary",
"type": "str",
"title": "Docker DF Summary",
"required": false,
"default": ""
}
]
}
]
}