feat: 1) ListGroups返回组内主机详细信息 2) 前端刷新间隔改为5分钟 3) 命令执行和Playbook页面主机组支持展开显示组内主机

This commit is contained in:
Hermes Agent
2026-05-13 17:57:41 +08:00
commit 9c1f44e91a
20 changed files with 4062 additions and 0 deletions
+53
View File
@@ -0,0 +1,53 @@
---
- name: 检测主机 CPU、内存、磁盘占用
hosts: all
gather_facts: yes
vars:
warn_threshold: 80
crit_threshold: 90
tasks:
- name: 获取 CPU 使用率
shell: |
top -bn1 | grep "Cpu(s)" | awk '{print "cpu_usage:" $2}' | cut -d'%' -f1
register: cpu_result
- name: 获取内存使用率
shell: |
free | grep Mem | awk '{printf "memory_used:%.0f\nmemory_total:%.0f\n", $3, $2}'
register: mem_result
- name: 获取磁盘使用率
shell: |
df -h | grep -E '/$|/data' | awk '{print $1 ":" $5}'
register: disk_result
- name: 格式化输出
set_fact:
cpu_usage: "{{ cpu_result.stdout_lines[0].split(':')[1] | trim }}"
memory_used_mb: "{{ (mem_result.stdout_lines[0].split(':')[1] | trim | float / 1024) | round | int }}"
memory_total_mb: "{{ (mem_result.stdout_lines[1].split(':')[1] | trim | float / 1024) | round | int }}"
disk_usage: "{{ disk_result.stdout_lines }}"
- name: 显示检测结果
debug:
msg: |
================== 主机检测报告 ==================
主机名: {{ inventory_hostname }}
CPU 使用率: {{ cpu_usage }}%
内存使用: {{ memory_used_mb }} MB / {{ memory_total_mb }} MB
磁盘使用:
{% for disk in disk_usage %}
- {{ disk }}
{% endfor %}
=================================================
- name: 告警判断
fail:
msg: "{{ inventory_hostname }} CPU 使用率超过 {{ crit_threshold }}%: {{ cpu_usage }}%"
when: cpu_usage | int >= crit_threshold
- name: 警告判断
warn:
msg: "{{ inventory_hostname }} CPU 使用率超过 {{ warn_threshold }}%: {{ cpu_usage }}%"
when: cpu_usage | int >= warn_threshold and cpu_usage | int < crit_threshold
+38
View File
@@ -0,0 +1,38 @@
---
# 系统信息检查
- name: System Information
hosts: "{{ target_hosts | default('all') }}"
gather_facts: yes
tasks:
- name: Display OS info
debug:
msg: "OS: {{ ansible_facts['distribution'] }} {{ ansible_facts['distribution_version'] }}"
- name: Display hostname
debug:
msg: "Hostname: {{ ansible_facts['hostname'] }}"
- name: Display IP addresses
debug:
msg: "IP: {{ ansible_facts['default_ipv4']['address'] }}"
- name: Display memory info
debug:
msg: "Memory: {{ (ansible_facts['memtotal_mb'] / 1024) | round(2) }} GB"
- name: Display CPU info
debug:
msg: "CPU: {{ ansible_facts['processor_vcpus'] }} vCPUs"
- name: Display disk space
debug:
msg: "Disk: {{ ansible_facts['mounts'][0]['size_total'] | default(0) | int / 1024 / 1024 / 1024 | round(2) }} GB"
- name: Uptime
command: uptime -s
register: uptime
- name: Show uptime
debug:
msg: "Uptime since: {{ uptime.stdout }}"
+51
View File
@@ -0,0 +1,51 @@
---
# 安装Docker
- name: Install Docker
hosts: "{{ target_hosts | default('all') }}"
become: yes
vars:
docker_version: latest
tasks:
- name: Install required packages
apt:
name:
- apt-transport-https
- ca-certificates
- curl
- gnupg
- lsb-release
state: present
when: ansible_os_family == "Debian"
- name: Add Docker GPG key
apt_key:
url: https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg
state: present
- name: Add Docker repository
apt_repository:
repo: "deb [arch=amd64] https://download.docker.com/linux/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} stable"
state: present
when: ansible_os_family == "Debian"
- name: Install Docker
apt:
name:
- docker-ce
- docker-ce-cli
- containerd.io
- docker-compose-plugin
state: present
- name: Start Docker service
service:
name: docker
state: started
enabled: yes
- name: Add user to docker group
user:
name: "{{ ansible_user }}"
groups: docker
append: yes
+53
View File
@@ -0,0 +1,53 @@
---
# 部署Nginx
- name: Deploy Nginx
hosts: "{{ target_hosts | default('all') }}"
become: yes
vars:
nginx_worker_processes: auto
nginx_worker_connections: 1024
server_name: localhost
tasks:
- name: Install Nginx
apt:
name: nginx
state: present
when: ansible_os_family == "Debian"
- name: Install Nginx
yum:
name: nginx
state: present
when: ansible_os_family == "RedHat"
- name: Configure Nginx
template:
src: templates/nginx.conf.j2
dest: /etc/nginx/nginx.conf
mode: '0644'
notify: Restart Nginx
- name: Create site configuration
template:
src: templates/site.conf.j2
dest: /etc/nginx/conf.d/{{ server_name }}.conf
mode: '0644'
notify: Reload Nginx
- name: Start Nginx
service:
name: nginx
state: started
enabled: yes
handlers:
- name: Restart Nginx
service:
name: nginx
state: restarted
- name: Reload Nginx
service:
name: nginx
state: reloaded
+30
View File
@@ -0,0 +1,30 @@
---
# 更新系统包
- name: Update System Packages
hosts: all
become: yes
vars:
update_cache: yes
tasks:
- name: Update apt cache
apt:
update_cache: yes
when: ansible_os_family == "Debian"
- name: Upgrade all packages
apt:
upgrade: dist
autoremove: yes
when: ansible_os_family == "Debian"
- name: Update yum cache
yum:
update_cache: yes
when: ansible_os_family == "RedHat"
- name: Upgrade all packages
yum:
name: "*"
state: latest
when: ansible_os_family == "RedHat"