{"id":28765731,"url":"https://github.com/docsible/sysinspect","last_synced_at":"2026-01-20T16:29:58.141Z","repository":{"id":292222099,"uuid":"980178091","full_name":"docsible/sysinspect","owner":"docsible","description":"Repo testing for PR's on docsible","archived":false,"fork":false,"pushed_at":"2025-08-15T17:05:40.000Z","size":93,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-15T19:27:06.637Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/docsible.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-08T17:36:12.000Z","updated_at":"2025-08-15T17:05:43.000Z","dependencies_parsed_at":"2025-05-08T19:33:05.561Z","dependency_job_id":"e5e98044-1fe0-4a0e-9f83-fc18d88233a4","html_url":"https://github.com/docsible/sysinspect","commit_stats":null,"previous_names":["docsible/sysinspect"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/docsible/sysinspect","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/docsible%2Fsysinspect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/docsible%2Fsysinspect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/docsible%2Fsysinspect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/docsible%2Fsysinspect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/docsible","download_url":"https://codeload.github.com/docsible/sysinspect/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/docsible%2Fsysinspect/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28607159,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T16:10:39.856Z","status":"ssl_error","status_checked_at":"2026-01-20T16:10:39.493Z","response_time":117,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-17T11:11:25.962Z","updated_at":"2026-01-20T16:29:58.121Z","avatar_url":"https://github.com/docsible.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- DOCSIBLE START --\u003e\n\n# 📃 Role overview\n\n## sysinspect\n\n\n\nDescription: Ansible role for collecting system metrics (CPU, memory, disk, OS, and network). Designed for diagnostics, compliance reporting, monitoring integration, or automated system audits. Test url link [url to..](https://github.com/docsible/sysinspect/edit/main/meta/main.yml)\n\n\n\n| Field                | Value           |\n|--------------------- |-----------------|\n| Readme update        | 08/05/2025 |\n\n\n\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e🧩 Argument Specifications in meta/argument_specs\u003c/b\u003e\u003c/summary\u003e\n\n#### Key: main\n**Description**: Collect system metrics (CPU, memory, disk, OS, network) and generate a structured JSON report with optional webhook integration.\n\n\n\n  - **sysinspect_debug_mode**\n    - **Required**: False\n    - **Type**: bool\n    - **Default**: True\n    - **Description**: If true, enables debug output including the final JSON report printed to the terminal.\n\n  \n  \n  \n\n  - **sysinspect_report_output_path**\n    - **Required**: False\n    - **Type**: str\n    - **Default**: /tmp/system_report.json\n    - **Description**: Path where the final JSON report will be written on the target host.\n\n  \n  \n  \n\n  - **sysinspect_report_webhook_url**\n    - **Required**: False\n    - **Type**: str\n    - **Default**: \n    - **Description**: Optional URL of a webhook endpoint to which the report will be POSTed.\n\n  \n  \n  \n\n  - **sysinspect_collect_hardware**\n    - **Required**: False\n    - **Type**: bool\n    - **Default**: True\n    - **Description**: Whether to collect CPU, memory, and disk metrics.\n\n  \n  \n  \n\n  - **sysinspect_collect_os**\n    - **Required**: False\n    - **Type**: bool\n    - **Default**: True\n    - **Description**: Whether to collect OS version, kernel, and system uptime.\n\n  \n  \n  \n\n  - **sysinspect_collect_network**\n    - **Required**: False\n    - **Type**: bool\n    - **Default**: True\n    - **Description**: Whether to collect IP address and basic network diagnostics.\n\n  \n  \n  \n\n  - **sysinspect_cpu_alert_threshold**\n    - **Required**: False\n    - **Type**: int\n    - **Default**: 90\n    - **Description**: CPU usage percentage above which a warning alert is triggered.\n\n  \n  \n  \n\n  - **sysinspect_memory_alert_threshold**\n    - **Required**: False\n    - **Type**: int\n    - **Default**: 90\n    - **Description**: Memory usage percentage above which a warning alert is triggered.\n\n  \n  \n  \n\n  - **myapp_int**\n    - **Required**: False\n    - **Type**: int\n    - **Default**: 42\n    - **Description**: ['The integer value, defaulting to 42.', 'This is a second paragraph.']\n  \n  \n  \n\n  - **myapp_str**\n    - **Required**: True\n    - **Type**: str\n    - **Default**: none\n    - **Description**: The string value\n  \n  \n  \n\n  - **myapp_list**\n    - **Required**: True\n    - **Type**: list\n    - **Default**: none\n    - **Description**: A list of string values.\n  \n  \n  \n\n  - **myapp_list_with_dicts**\n    - **Required**: False\n    - **Type**: list\n    - **Default**: [{'myapp_food_kind': 'meat', 'myapp_food_boiling_required': True, 'myapp_food_preparation_time': 60}, {'myapp_food_kind': 'fruits', 'myapp_food_preparation_time': 5}]\n    - **Description**: A list of dicts with a defined structure and with default a value.\n  \n  \n  \n    \n      \n        \n\n    - **myapp_food_kind**\n      - **Required**: false\n      - **Type**: \n      - **Default**: none\n      - **Description**: No description provided\n  \n  \n  \n\n    - **myapp_food_boiling_required**\n      - **Required**: false\n      - **Type**: \n      - **Default**: none\n      - **Description**: No description provided\n  \n  \n  \n\n    - **myapp_food_preparation_time**\n      - **Required**: false\n      - **Type**: \n      - **Default**: none\n      - **Description**: No description provided\n  \n  \n  \n\n\n      \n    \n      \n        \n\n    - **myapp_food_kind**\n      - **Required**: false\n      - **Type**: \n      - **Default**: none\n      - **Description**: No description provided\n  \n  \n  \n\n    - **myapp_food_preparation_time**\n      - **Required**: false\n      - **Type**: \n      - **Default**: none\n      - **Description**: No description provided\n  \n  \n  \n\n\n      \n    \n  \n\n  - **myapp_dict_with_suboptions**\n    - **Required**: False\n    - **Type**: dict\n    - **Default**: {'myapp_host': 'bar.foo', 'myapp_exclude_host': True, 'myapp_path': '/etc/myapp'}\n    - **Description**: A dict with a defined structure and default values.\n  \n  \n  \n    \n\n    - **myapp_host**\n      - **Required**: True\n      - **Type**: str\n      - **Default**: none\n      - **Description**: A string value with a limited list of allowed choices.\n  \n        - **Choices**:\n    \n            - foo.bar\n    \n            - bar.foo\n    \n            - ansible.foo.bar\n    \n  \n  \n  \n\n    - **myapp_exclude_host**\n      - **Required**: True\n      - **Type**: bool\n      - **Default**: none\n      - **Description**: A boolean value.\n  \n  \n  \n\n    - **myapp_path**\n      - **Required**: True\n      - **Type**: path\n      - **Default**: none\n      - **Description**: A path value.\n  \n  \n  \n\n    - **original_name**\n      - **Required**: False\n      - **Type**: list\n      - **Default**: none\n      - **Description**: An optional list of string values.\n  \n  \n  \n\n\n  \n\n\n\n#### Key: alternate\n**Description**: ['This is the alternate entrypoint for the C(myapp) role.']\n\n\n  - **myapp_int**\n    - **Required**: False\n    - **Type**: int\n    - **Default**: 1024\n    - **Description**: The integer value, defaulting to 1024.\n  \n  \n  \n\n\n\n\u003c/details\u003e\n\n\n\n\n### Defaults\n\n**These are static variables with lower priority**\n\n#### File: defaults/main.yml\n\n| Var          | Type         | Value       |Required    | Title       |\n|--------------|--------------|-------------|------------|-------------|\n| [my-var1-key1-reference](defaults/main.yml#L8)   | dict | `{}` |    false  |  Test issue 100 key1 |\n| [my-var1-key1-reference.**sub-key11**](defaults/main.yml#L9)   | str | `sub-key11-value` |    None  |  None |\n| [my-var1-key1-reference.**sub-key12**](defaults/main.yml#L10)   | str | `sub-key12-value` |    None  |  None |\n| [my-var1-key2-reference](defaults/main.yml#L15)   | dict | `{}` |    false  |  Test issue 100 key2 |\n| [my-var1-key2-reference.**sub-key21**](defaults/main.yml#L16)   | str | `sub-key11-value` |    None  |  None |\n| [my-var1-key2-reference.**sub-key22**](defaults/main.yml#L17)   | str | `sub-key12-value` |    None  |  None |\n| [my-var1-key3-reference](defaults/main.yml#L20)   | dict | `{}` |    None  |  None |\n| [my-var1-key3-reference.**sub-key31**](defaults/main.yml#L21)   | str | `sub-key31-value` |    None  |  None |\n| [my-var1-key3-reference.**sub-key32**](defaults/main.yml#L22)   | str | `sub-key32-value` |    None  |  None |\n| [my-var1](defaults/main.yml#L24)   | dict | `{}` |    None  |  None |\n| [my-var1.**key1**](defaults/main.yml#L25)   | str | `\u003cmultiline value: folded_strip\u003e` |    None  |  None |\n| [my-var1.**key2**](defaults/main.yml#L27)   | str | `\u003cmultiline value: folded_strip\u003e` |    None  |  None |\n| [my-var1.**key3**](defaults/main.yml#L29)   | str | `\u003cmultiline value: folded_strip\u003e` |    None  |  None |\n| [sysinspect_debug_mode](defaults/main.yml#L37)   | bool | `True` |    false  |  Enable debug mode for detailed output |\n| [sysinspect_common_resolv_conf_literal](defaults/main.yml#L42)   | str | `\u003cmultiline value: literal\u003e` |    false  |  Test issue 83 |\n| [sysinspect_common_resolv_conf_folded](defaults/main.yml#L50)   | str | `\u003cmultiline value: folded\u003e` |    false  |  Test issue 83 |\n| [sysinspect_common_resolv_conf_literal_indent](defaults/main.yml#L58)   | str | `\u003cmultiline value: literal_indent_2\u003e` |    false  |  Test issue 83 |\n| [sysinspect_common_resolv_conf_folded_indent](defaults/main.yml#L66)   | str | `\u003cmultiline value: folded_indent_2\u003e` |    false  |  Test issue 83 |\n| [sysinspect_common_resolv_conf_list](defaults/main.yml#L74)   | list | `[]` |    false  |  Test issue 83 |\n| [sysinspect_common_resolv_conf_list.**0**](defaults/main.yml#L75)   | str | `search domain.local` |    None  |  None |\n| [sysinspect_common_resolv_conf_list.**1**](defaults/main.yml#L76)   | str | `nameserver 8.8.8.8` |    None  |  None |\n| [sysinspect_common_resolv_conf_list.**2**](defaults/main.yml#L77)   | str | `nameserver 8.8.4.4` |    None  |  None |\n| [sysinspect_b](defaults/main.yml#L82)   | str | `\u003cmultiline value: literal_keep\u003e` |    false  |  Literal with chomping \"keep\" |\n| [sysinspect_c](defaults/main.yml#L90)   | str | `\u003cmultiline value: literal_strip\u003e` |    false  |  Literal with chomping \"strip\" |\n| [sysinspect_myval](defaults/main.yml#L97)   | str | `\u003cmultiline value: literal_indent_4\u003e` |    false  |  Literal with indent=4 |\n| [sysinspect_val1](defaults/main.yml#L104)   | str | `\u003cmultiline value: literal_keep_indent_2\u003e` |    false  |  Literal with chomping \"keep\" and indent=2 |\n| [sysinspect_val2](defaults/main.yml#L112)   | str | `\u003cmultiline value: literal_strip_indent_4\u003e` |    false  |  Literal with chomping \"strip\" and indent=4 |\n| [sysinspect_val3](defaults/main.yml#L120)   | str | `\u003cmultiline value: literal_keep_indent_2\u003e` |    false  |  Literal with indent=2 and chomping \"keep\" |\n| [sysinspect_report_output_path](defaults/main.yml#L130)   | str | `/tmp/system_report.json` |    true  |  Output path for system report |\n| [sysinspect_report_webhook_url](defaults/main.yml#L136)   | str |  |    false  |  Send report to webhook |\n| [sysinspect_collect_hardware](defaults/main.yml#L142)   | bool | `True` |    true  |  Collect CPU, memory, and disk usage |\n| [sysinspect_collect_os](defaults/main.yml#L148)   | bool | `True` |    true  |  Collect OS, kernel, and uptime info |\n| [sysinspect_collect_network](defaults/main.yml#L153)   | bool | `True` |    true  |  Collect network information (IP addresses) |\n| [sysinspect_cpu_alert_threshold](defaults/main.yml#L158)   | int | `90` |    false  |  CPU usage alert threshold |\n| [sysinspect_memory_alert_threshold](defaults/main.yml#L163)   | int | `90` |    false  |  Memory usage alert threshold |\n\n#### File: defaults/main/another_default_test.yml\n\n| Var          | Type         | Value       |Required    | Title       |\n|--------------|--------------|-------------|------------|-------------|\n| [sysinspect_debug_mode](defaults/main/another_default_test.yml#L10)   | bool | `True` |    false  |  Enable debug mode for detailed output |\n\n#### File: defaults/main/main.yml\n\n| Var          | Type         | Value       |Required    | Title       |\n|--------------|--------------|-------------|------------|-------------|\n| [sysinspect_debug_mode](defaults/main/main.yml#L10)   | bool | `True` |    false  |  Enable debug mode for detailed output |\n| [my-var1-key1-reference](defaults/main/main.yml#L15)   | dict | `{}` |    false  |  Test issue 100 key1 |\n| [my-var1-key1-reference.**sub-key11**](defaults/main/main.yml#L16)   | str | `sub-key11-value` |    None  |  None |\n| [my-var1-key1-reference.**sub-key12**](defaults/main/main.yml#L17)   | str | `sub-key12-value` |    None  |  None |\n| [my-var1-key2-reference](defaults/main/main.yml#L22)   | dict | `{}` |    false  |  Test issue 100 key2 |\n| [my-var1-key2-reference.**sub-key21**](defaults/main/main.yml#L23)   | str | `sub-key11-value` |    None  |  None |\n| [my-var1-key2-reference.**sub-key22**](defaults/main/main.yml#L24)   | str | `sub-key12-value` |    None  |  None |\n| [my-var1-key3-reference](defaults/main/main.yml#L27)   | dict | `{}` |    None  |  None |\n| [my-var1-key3-reference.**sub-key31**](defaults/main/main.yml#L28)   | str | `sub-key31-value` |    None  |  None |\n| [my-var1-key3-reference.**sub-key32**](defaults/main/main.yml#L29)   | str | `sub-key32-value` |    None  |  None |\n| [my-var1](defaults/main/main.yml#L31)   | dict | `{}` |    None  |  None |\n| [my-var1.**key1**](defaults/main/main.yml#L32)   | str | `\u003cmultiline value: folded_strip\u003e` |    None  |  None |\n| [my-var1.**key2**](defaults/main/main.yml#L34)   | str | `\u003cmultiline value: folded_strip\u003e` |    None  |  None |\n| [my-var1.**key3**](defaults/main/main.yml#L36)   | str | `\u003cmultiline value: folded_strip\u003e` |    None  |  None |\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e🖇️ Full descriptions for vars in defaults/main.yml\u003c/b\u003e\u003c/summary\u003e\n\u003cbr\u003e\n\u003ctable\u003e\n\u003cth\u003eVar\u003c/th\u003e\u003cth\u003eDescription\u003c/th\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003emy-var1-key1-reference\u003c/b\u003e\u003c/td\u003e\u003ctd\u003etest description key2.\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003emy-var1-key2-reference\u003c/b\u003e\u003c/td\u003e\u003ctd\u003etest description key2.\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_debug_mode\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eIf true, the role will display additional debug information at runtime,\u003cbr\u003e\nincluding the final assembled JSON report before writing or sending it.\u003cbr\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_common_resolv_conf_literal\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eLiteral style, preserves newlines and indentation exactly\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_common_resolv_conf_folded\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eFolded style, converts newlines to spaces\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_common_resolv_conf_literal_indent\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eLiteral style with indent indicator, preserves newlines; forces 2-space indentation (⚠️ may not be supported in Ansible)\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_common_resolv_conf_folded_indent\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eFolded style with indent indicator, newlines become spaces; forces 2-space indentation (⚠️ may not be supported)\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_common_resolv_conf_list\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eList of lines, one item per DNS line (best for iteration in templates)\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_b\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eLiteral style, preserves all trailing newlines\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_c\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eLiteral style, strips all trailing newlines\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_myval\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eLiteral style with forced 4-space indentation (⚠️ non-portable)\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_val1\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eKeeps newlines and enforces 2-space indent (⚠️ not safe in all parsers)\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_val2\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eStrips trailing newlines and forces 4-space indent (⚠️ avoid in Ansible)\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_val3\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eSame as above; order of indicators doesn't matter (⚠️ not always supported)\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_report_output_path\u003c/b\u003e\u003c/td\u003e\u003ctd\u003ePath where the final JSON report will be written.\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_report_webhook_url\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eURL of the HTTP endpoint that will receive the report.\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_collect_hardware\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eEnable or disable hardware metric collection.\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_collect_os\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eEnable or disable operating system info collection.\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_collect_network\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eEnable or disable network diagnostics.\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_cpu_alert_threshold\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eIf CPU usage exceeds this percentage, it will trigger an alert.\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_memory_alert_threshold\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eIf memory usage exceeds this percentage, it will trigger an alert.\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003cbr\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e🖇️ Full descriptions for vars in defaults/main/another_default_test.yml\u003c/b\u003e\u003c/summary\u003e\n\u003cbr\u003e\n\u003ctable\u003e\n\u003cth\u003eVar\u003c/th\u003e\u003cth\u003eDescription\u003c/th\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_debug_mode\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eIf true, the role will display additional debug information at runtime,\u003cbr\u003e\nincluding the final assembled JSON report before writing or sending it.\u003cbr\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003cbr\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e🖇️ Full descriptions for vars in defaults/main/main.yml\u003c/b\u003e\u003c/summary\u003e\n\u003cbr\u003e\n\u003ctable\u003e\n\u003cth\u003eVar\u003c/th\u003e\u003cth\u003eDescription\u003c/th\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_debug_mode\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eIf true, the role will display additional debug information at runtime,\u003cbr\u003e\nincluding the final assembled JSON report before writing or sending it.\u003cbr\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003emy-var1-key1-reference\u003c/b\u003e\u003c/td\u003e\u003ctd\u003etest description key2.\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003emy-var1-key2-reference\u003c/b\u003e\u003c/td\u003e\u003ctd\u003etest description key2.\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003cbr\u003e\n\u003c/details\u003e\n\n\n### Vars\n\n**These are variables with higher priority**\n#### File: vars/main.yml\n\n| Var          | Type         | Value       |Required    | Title       |\n|--------------|--------------|-------------|------------|-------------|\n| [sysinspect_suite_name](vars/main.yml#L8)   | str | `System Inspector v2.0` |    true  |  Name of the diagnostic suite |\n| [sysinspect_phases](vars/main.yml#L15)   | list | `[]` |    true  |  Phases of system inspection |\n| [sysinspect_phases.**0**](vars/main.yml#L16)   | dict | `{}` |    None  |  None |\n| [sysinspect_phases.0.**id**](vars/main.yml#L16)   | str | `hardware_check` |    None  |  None |\n| [sysinspect_phases.0.**label**](vars/main.yml#L20)   | str | `Hardware Metrics Collection` |    true  |  Phase ID |\n| [sysinspect_phases.0.**description**](vars/main.yml#L24)   | str | `Collects hardware statistics including nested device checks.` |    true  |  Phase label |\n| [sysinspect_phases.0.**subphases**](vars/main.yml#L28)   | list | `[]` |    false  |  Subphases |\n| [sysinspect_phases.0.subphases.**0**](vars/main.yml#L29)   | dict | `{}` |    None  |  None |\n| [sysinspect_phases.0.subphases.0.**id**](vars/main.yml#L29)   | str | `cpu_inspect` |    None  |  None |\n| [sysinspect_phases.0.subphases.0.**label**](vars/main.yml#L33)   | str | `CPU Details` |    true  |  Subphase ID |\n| [sysinspect_phases.0.subphases.0.**description**](vars/main.yml#L37)   | str | `Gathers model, core count, and usage per core.` |    true  |  Subphase label |\n| [sysinspect_phases.0.subphases.**1**](vars/main.yml#L39)   | dict | `{}` |    None  |  None |\n| [sysinspect_phases.0.subphases.1.**id**](vars/main.yml#L39)   | str | `mem_inspect` |    None  |  None |\n| [sysinspect_phases.0.subphases.1.**label**](vars/main.yml#L40)   | str | `Memory Details` |    None  |  None |\n| [sysinspect_phases.0.subphases.1.**description**](vars/main.yml#L41)   | str | `Retrieves total, used, and free memory.` |    None  |  None |\n| [sysinspect_phases.0.subphases.**2**](vars/main.yml#L43)   | dict | `{}` |    None  |  None |\n| [sysinspect_phases.0.subphases.2.**id**](vars/main.yml#L43)   | str | `disk_inspect` |    None  |  None |\n| [sysinspect_phases.0.subphases.2.**label**](vars/main.yml#L44)   | str | `Disk Inspection` |    None  |  None |\n| [sysinspect_phases.0.subphases.2.**description**](vars/main.yml#L45)   | str | `Inspects mounted filesystems, usage, and I/O metrics.` |    None  |  None |\n| [sysinspect_phases.0.subphases.2.**conditions**](vars/main.yml#L46)   | dict | `{}` |    None  |  None |\n| [sysinspect_phases.0.subphases.2.conditions.**min_disk_free_percent**](vars/main.yml#L50)   | int | `10` |    false  |  Minimum disk free percent |\n| [sysinspect_phases.**1**](vars/main.yml#L52)   | dict | `{}` |    None  |  None |\n| [sysinspect_phases.1.**id**](vars/main.yml#L52)   | str | `os_info_check` |    None  |  None |\n| [sysinspect_phases.1.**label**](vars/main.yml#L53)   | str | `Operating System Inspection` |    None  |  None |\n| [sysinspect_phases.1.**description**](vars/main.yml#L54)   | str | `Retrieves OS, kernel version, uptime.` |    None  |  None |\n| [sysinspect_phases.1.**metadata**](vars/main.yml#L55)   | dict | `{}` |    None  |  None |\n| [sysinspect_phases.1.metadata.**os_release_files**](vars/main.yml#L59)   | list | `[]` |    false  |  OS release files |\n| [sysinspect_phases.1.metadata.os_release_files.**0**](vars/main.yml#L60)   | str | `/etc/os-release` |    None  |  None |\n| [sysinspect_phases.1.metadata.os_release_files.**1**](vars/main.yml#L61)   | str | `/etc/lsb-release` |    None  |  None |\n| [sysinspect_phases.1.metadata.**include_hostname**](vars/main.yml#L65)   | bool | `True` |    false  |  Include hostname |\n| [sysinspect_phases.**2**](vars/main.yml#L67)   | dict | `{}` |    None  |  None |\n| [sysinspect_phases.2.**id**](vars/main.yml#L67)   | str | `network_check` |    None  |  None |\n| [sysinspect_phases.2.**label**](vars/main.yml#L68)   | str | `Network Interfaces` |    None  |  None |\n| [sysinspect_phases.2.**description**](vars/main.yml#L69)   | str | `Collects interface configs and ping tests.` |    None  |  None |\n| [sysinspect_phases.2.**interfaces**](vars/main.yml#L70)   | list | `[]` |    None  |  None |\n| [sysinspect_phases.2.interfaces.**0**](vars/main.yml#L71)   | dict | `{}` |    None  |  None |\n| [sysinspect_phases.2.interfaces.0.**name**](vars/main.yml#L71)   | str | `eth0` |    None  |  None |\n| [sysinspect_phases.2.interfaces.0.**expected_state**](vars/main.yml#L75)   | str | `up` |    true  |  Expected interface state |\n| [sysinspect_phases.2.interfaces.0.**test_ping**](vars/main.yml#L79)   | str | `8.8.8.8` |    false  |  Ping test target |\n| [sysinspect_phases.2.interfaces.**1**](vars/main.yml#L80)   | dict | `{}` |    None  |  None |\n| [sysinspect_phases.2.interfaces.1.**name**](vars/main.yml#L80)   | str | `wlan0` |    None  |  None |\n| [sysinspect_phases.2.interfaces.1.**expected_state**](vars/main.yml#L81)   | str | `down` |    None  |  None |\n| [sysinspect_phases.2.interfaces.1.**test_ping**](vars/main.yml#L82)   | NoneType | `None` |    None  |  None |\n| [sysinspect_phases.**3**](vars/main.yml#L84)   | dict | `{}` |    None  |  None |\n| [sysinspect_phases.3.**id**](vars/main.yml#L84)   | str | `alerting` |    None  |  None |\n| [sysinspect_phases.3.**label**](vars/main.yml#L85)   | str | `Threshold \u0026 Alert Logic` |    None  |  None |\n| [sysinspect_phases.3.**description**](vars/main.yml#L86)   | str | `Evaluates CPU and memory thresholds to trigger warnings.` |    None  |  None |\n| [sysinspect_phases.3.**thresholds**](vars/main.yml#L87)   | dict | `{}` |    None  |  None |\n| [sysinspect_phases.3.thresholds.**cpu**](vars/main.yml#L88)   | dict | `{}` |    None  |  None |\n| [sysinspect_phases.3.thresholds.cpu.**warn**](vars/main.yml#L92)   | int | `75` |    true  |  CPU warning threshold |\n| [sysinspect_phases.3.thresholds.cpu.**crit**](vars/main.yml#L96)   | int | `90` |    true  |  CPU critical threshold |\n| [sysinspect_phases.3.thresholds.**memory**](vars/main.yml#L97)   | dict | `{}` |    None  |  None |\n| [sysinspect_phases.3.thresholds.memory.**warn**](vars/main.yml#L98)   | int | `80` |    None  |  None |\n| [sysinspect_phases.3.thresholds.memory.**crit**](vars/main.yml#L99)   | int | `95` |    None  |  None |\n| [sysinspect_phases.**4**](vars/main.yml#L101)   | dict | `{}` |    None  |  None |\n| [sysinspect_phases.4.**id**](vars/main.yml#L101)   | str | `json_output` |    None  |  None |\n| [sysinspect_phases.4.**label**](vars/main.yml#L102)   | str | `JSON Report Structuring` |    None  |  None |\n| [sysinspect_phases.4.**description**](vars/main.yml#L103)   | str | `Formats inspection output in JSON.` |    None  |  None |\n| [sysinspect_phases.4.**include_metadata**](vars/main.yml#L107)   | bool | `True` |    false  |  Include metadata |\n| [sysinspect_phases.4.**sanitize_keys**](vars/main.yml#L111)   | bool | `True` |    false  |  Sanitize keys |\n| [sysinspect_phases.**5**](vars/main.yml#L113)   | dict | `{}` |    None  |  None |\n| [sysinspect_phases.5.**id**](vars/main.yml#L113)   | str | `webhook_post` |    None  |  None |\n| [sysinspect_phases.5.**label**](vars/main.yml#L114)   | str | `Webhook Result Push` |    None  |  None |\n| [sysinspect_phases.5.**description**](vars/main.yml#L115)   | str | `Sends report to external endpoint if configured.` |    None  |  None |\n| [sysinspect_phases.5.**config**](vars/main.yml#L116)   | dict | `{}` |    None  |  None |\n| [sysinspect_phases.5.config.**enabled**](vars/main.yml#L120)   | bool | `True` |    true  |  Enable webhook |\n| [sysinspect_phases.5.config.**retry_count**](vars/main.yml#L124)   | int | `3` |    false  |  Retry count |\n| [sysinspect_phases.5.config.**timeout_seconds**](vars/main.yml#L128)   | int | `5` |    false  |  Timeout seconds |\n| [sysinspect_phases.5.config.**endpoint**](vars/main.yml#L132)   | str | `{{ sysinspect_webhook_url ¦ default('') }}` |    true  |  Webhook endpoint |\n| [sysinspect_tool_info](vars/main.yml#L138)   | dict | `{}` |    true  |  Internal tool metadata |\n| [sysinspect_tool_info.**name**](vars/main.yml#L139)   | str | `InspectorCoreShell` |    None  |  None |\n| [sysinspect_tool_info.**version**](vars/main.yml#L140)   | str | `2.0.1` |    None  |  None |\n| [sysinspect_tool_info.**license**](vars/main.yml#L141)   | str | `MIT-0` |    None  |  None |\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e🖇️ Full Descriptions for vars in vars/main.yml\u003c/b\u003e\u003c/summary\u003e\n\u003cbr\u003e\n\u003ctable\u003e\n\u003cth\u003eVar\u003c/th\u003e\u003cth\u003eDescription\u003c/th\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_suite_name\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eHuman-readable name of the system inspection suite. Used in logging and reporting.\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_phases\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e- Nested list of inspection phases.\u003cbr\u003e\n- Each phase can contain one or more subphases with their own labels, descriptions, and conditions.\u003cbr\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_phases.0.label\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eUnique identifier for the phase.\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_phases.0.description\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eHuman-friendly name of the phase.\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_phases.0.subphases\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eList of substeps to run within this phase.\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_phases.0.subphases.0.label\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eIdentifier for this subphase.\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_phases.0.subphases.0.description\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eHuman-friendly name for the subphase.\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_phases.0.subphases.2.conditions.min_disk_free_percent\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eTriggers an alert if free disk percentage drops below this value.\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_phases.1.metadata.os_release_files\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eList of files to parse for OS release info.\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_phases.1.metadata.include_hostname\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eWhether to include system hostname in output.\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_phases.2.interfaces.0.expected_state\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eDesired operational state (\"up\" or \"down\").\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_phases.2.interfaces.0.test_ping\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eOptional IP or hostname to ping for connectivity test.\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_phases.3.thresholds.cpu.warn\u003c/b\u003e\u003c/td\u003e\u003ctd\u003ePercent usage that triggers a warning.\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_phases.3.thresholds.cpu.crit\u003c/b\u003e\u003c/td\u003e\u003ctd\u003ePercent usage that triggers a critical alert.\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_phases.4.include_metadata\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eWhether to embed metadata in the JSON output.\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_phases.4.sanitize_keys\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eConvert keys to safe formats (e.g., snake_case, remove invalid chars).\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_phases.5.config.enabled\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eWhether to send results to a webhook.\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_phases.5.config.retry_count\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eNumber of times to retry on failure.\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_phases.5.config.timeout_seconds\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eTimeout for the webhook POST request.\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_phases.5.config.endpoint\u003c/b\u003e\u003c/td\u003e\u003ctd\u003eURL to send results to (may be templated).\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\u003cb\u003esysinspect_tool_info\u003c/b\u003e\u003c/td\u003e\u003ctd\u003e- Information used for versioning and tool identity.\u003cbr\u003e\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\u003cbr\u003e\n\u003c/details\u003e\n\n\n### Tasks\n\n\n#### File: tasks/collect_metric.yml\n\n| Name | Module | Has Conditions |\n| ---- | ------ | -------------- |\n| Run metric shell command for {{ metric_name }} | ansible.builtin.shell | True |\n| Transfer result to dynamic register var | ansible.builtin.set_fact | True |\n\n#### File: tasks/main.yml\n\n| Name | Module | Has Conditions | Comments |\n| ---- | ------ | -------------- | -------- |\n| Begin system diagnostics | ansible.builtin.debug | False |  |\n| Initialize data dictionary | ansible.builtin.set_fact | False |  |\n| Collect hardware metrics | block | False | --- Hardware Block --- |\n| Collect CPU usage | ansible.builtin.include_tasks | False | Collect CPU usage |\n| Collect memory usage | ansible.builtin.include_tasks | False | Collect memory usage |\n| Collect disk usage | ansible.builtin.import_tasks | False | Collect disk usage |\n| Set hardware facts | ansible.builtin.set_fact | True |  |\n| Collect OS metrics | block | False | --- OS Block --- |\n| Get OS version | ansible.builtin.import_tasks | False |  |\n| Get kernel version | ansible.builtin.include_tasks | False |  |\n| Get uptime | ansible.builtin.include_tasks | False |  |\n| Set OS facts | ansible.builtin.set_fact | True |  |\n| Collect network info | block | False | --- Network Block --- |\n| Get main IP address | ansible.builtin.include_tasks | False |  |\n| Set network fact | ansible.builtin.set_fact | True |  |\n| Check threshold alerts | block | False | --- Resource Threshold Alerts --- |\n| Alert on high CPU | ansible.builtin.debug | True |  |\n| Alert on high memory | ansible.builtin.debug | True |  |\n| Append role configuration to report data | ansible.builtin.set_fact | False | --- Include Configuration Parameters into Report --- |\n| Show final system report JSON (debug mode) | ansible.builtin.debug | True | --- Debug Final Report --- |\n| Write system report to JSON file | ansible.builtin.copy | False | --- Output JSON --- |\n| Send report to webhook | ansible.builtin.uri | True | --- Send to webhook if URL is defined --- |\n\n\n## Task Flow Graphs\n\n\n\n### Graph for collect_metric.yml\n\n```mermaid\nflowchart TD\nStart\nclassDef block stroke:#3498db,stroke-width:2px;\nclassDef task stroke:#4b76bb,stroke-width:2px;\nclassDef includeTasks stroke:#16a085,stroke-width:2px;\nclassDef importTasks stroke:#34495e,stroke-width:2px;\nclassDef includeRole stroke:#2980b9,stroke-width:2px;\nclassDef importRole stroke:#699ba7,stroke-width:2px;\nclassDef includeVars stroke:#8e44ad,stroke-width:2px;\nclassDef rescue stroke:#665352,stroke-width:2px;\n\n  Start--\u003e|Task| Run_metric_shell_command_for_metric_name0[run metric shell command for metric name\u003cbr\u003eWhen: **metric collect**]:::task\n  Run_metric_shell_command_for_metric_name0--\u003e|Task| Transfer_result_to_dynamic_register_var1[transfer result to dynamic register var\u003cbr\u003eWhen: **metric collect**]:::task\n  Transfer_result_to_dynamic_register_var1--\u003eEnd\n```\n\n\n### Graph for main.yml\n\n```mermaid\nflowchart TD\nStart\nclassDef block stroke:#3498db,stroke-width:2px;\nclassDef task stroke:#4b76bb,stroke-width:2px;\nclassDef includeTasks stroke:#16a085,stroke-width:2px;\nclassDef importTasks stroke:#34495e,stroke-width:2px;\nclassDef includeRole stroke:#2980b9,stroke-width:2px;\nclassDef importRole stroke:#699ba7,stroke-width:2px;\nclassDef includeVars stroke:#8e44ad,stroke-width:2px;\nclassDef rescue stroke:#665352,stroke-width:2px;\n\n  Start--\u003e|Task| Begin_system_diagnostics0[begin system diagnostics]:::task\n  Begin_system_diagnostics0--\u003e|Task| Initialize_data_dictionary1[initialize data dictionary]:::task\n  Initialize_data_dictionary1--\u003e|Block Start| Collect_hardware_metrics2_block_start_0[[collect hardware metrics]]:::block\n  Collect_hardware_metrics2_block_start_0--\u003e|Include task| Collect_CPU_usage_collect_metric_yml_0[collect cpu usage\u003cbr\u003einclude_task: collect metric yml]:::includeTasks\n  Collect_CPU_usage_collect_metric_yml_0--\u003e|Include task| Collect_memory_usage_collect_metric_yml_1[collect memory usage\u003cbr\u003einclude_task: collect metric yml]:::includeTasks\n  Collect_memory_usage_collect_metric_yml_1--\u003e|Import task| Collect_disk_usage_collect_metric_yml_2[/collect disk usage\u003cbr\u003eimport_task: collect metric yml/]:::importTasks\n  Collect_disk_usage_collect_metric_yml_2--\u003e|Task| Set_hardware_facts3[set hardware facts\u003cbr\u003eWhen: **sysinspect collect hardware**]:::task\n  Set_hardware_facts3-.-\u003e|End of Block| Collect_hardware_metrics2_block_start_0\n  Set_hardware_facts3--\u003e|Rescue Start| Collect_hardware_metrics2_rescue_start_0[collect hardware metrics]:::rescue\n  Collect_hardware_metrics2_rescue_start_0--\u003e|Task| Log_hardware_collection_failure0[log hardware collection failure]:::task\n  Log_hardware_collection_failure0-.-\u003e|End of Rescue Block| Collect_hardware_metrics2_block_start_0\n  Log_hardware_collection_failure0--\u003e|Block Start| Collect_OS_metrics3_block_start_0[[collect os metrics]]:::block\n  Collect_OS_metrics3_block_start_0--\u003e|Import task| Get_OS_version_collect_metric_yml_0[/get os version\u003cbr\u003eimport_task: collect metric yml/]:::importTasks\n  Get_OS_version_collect_metric_yml_0--\u003e|Include task| Get_kernel_version_collect_metric_yml_1[get kernel version\u003cbr\u003einclude_task: collect metric yml]:::includeTasks\n  Get_kernel_version_collect_metric_yml_1--\u003e|Include task| Get_uptime_collect_metric_yml_2[get uptime\u003cbr\u003einclude_task: collect metric yml]:::includeTasks\n  Get_uptime_collect_metric_yml_2--\u003e|Task| Set_OS_facts3[set os facts\u003cbr\u003eWhen: **sysinspect collect os**]:::task\n  Set_OS_facts3-.-\u003e|End of Block| Collect_OS_metrics3_block_start_0\n  Set_OS_facts3--\u003e|Rescue Start| Collect_OS_metrics3_rescue_start_0[collect os metrics]:::rescue\n  Collect_OS_metrics3_rescue_start_0--\u003e|Task| Log_OS_info_collection_failure0[log os info collection failure]:::task\n  Log_OS_info_collection_failure0-.-\u003e|End of Rescue Block| Collect_OS_metrics3_block_start_0\n  Log_OS_info_collection_failure0--\u003e|Block Start| Collect_network_info4_block_start_0[[collect network info]]:::block\n  Collect_network_info4_block_start_0--\u003e|Include task| Get_main_IP_address_collect_metric_yml_0[get main ip address\u003cbr\u003einclude_task: collect metric yml]:::includeTasks\n  Get_main_IP_address_collect_metric_yml_0--\u003e|Task| Set_network_fact1[set network fact\u003cbr\u003eWhen: **sysinspect collect network**]:::task\n  Set_network_fact1-.-\u003e|End of Block| Collect_network_info4_block_start_0\n  Set_network_fact1--\u003e|Rescue Start| Collect_network_info4_rescue_start_0[collect network info]:::rescue\n  Collect_network_info4_rescue_start_0--\u003e|Task| Log_network_info_collection_failure0[log network info collection failure]:::task\n  Log_network_info_collection_failure0-.-\u003e|End of Rescue Block| Collect_network_info4_block_start_0\n  Log_network_info_collection_failure0--\u003e|Block Start| Check_threshold_alerts5_block_start_0[[check threshold alerts]]:::block\n  Check_threshold_alerts5_block_start_0--\u003e|Task| Alert_on_high_CPU0[alert on high cpu\u003cbr\u003eWhen: **system data cpu usage   default 0    sysinspect\u003cbr\u003ecpu alert threshold**]:::task\n  Alert_on_high_CPU0--\u003e|Task| Alert_on_high_memory1[alert on high memory\u003cbr\u003eWhen: **system data memory usage   default 0    sysinspect\u003cbr\u003ememory alert threshold**]:::task\n  Alert_on_high_memory1-.-\u003e|End of Block| Check_threshold_alerts5_block_start_0\n  Alert_on_high_memory1--\u003e|Rescue Start| Check_threshold_alerts5_rescue_start_0[check threshold alerts]:::rescue\n  Check_threshold_alerts5_rescue_start_0--\u003e|Task| Threshold_alert_processing_failed0[threshold alert processing failed]:::task\n  Threshold_alert_processing_failed0-.-\u003e|End of Rescue Block| Check_threshold_alerts5_block_start_0\n  Threshold_alert_processing_failed0--\u003e|Task| Append_role_configuration_to_report_data6[append role configuration to report data]:::task\n  Append_role_configuration_to_report_data6--\u003e|Task| Show_final_system_report_JSON__debug_mode_7[show final system report json  debug mode \u003cbr\u003eWhen: **sysinspect debug mode**]:::task\n  Show_final_system_report_JSON__debug_mode_7--\u003e|Task| Write_system_report_to_JSON_file8[write system report to json file]:::task\n  Write_system_report_to_JSON_file8--\u003e|Task| Send_report_to_webhook9[send report to webhook\u003cbr\u003eWhen: **sysinspect report webhook url**]:::task\n  Send_report_to_webhook9--\u003eEnd\n```\n\n\n## Playbook\n\n```yml\n#SPDX-License-Identifier: MIT-0\n---\n- name: Sysinspect playbook\n  hosts: \n    - localhost\n    - devhost\n    - prodhost\n  remote_user: root\n  roles:\n    - ../sysinspect\n\n```\n## Playbook graph\n```mermaid\nflowchart TD\n  hosts[localhost, devhost, prodhost]--\u003e|Role| ___sysinspect[   sysinspect]\n```\n\n## Author Information\nLucian BLETAN\n\n#### License\n\nMIT\n\n#### Minimum Ansible Version\n\n2.1\n\n#### Platforms\n\nNo platforms specified.\n\n#### Dependencies\n\nNo dependencies specified.\n\u003c!-- DOCSIBLE END --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdocsible%2Fsysinspect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdocsible%2Fsysinspect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdocsible%2Fsysinspect/lists"}