172 lines
4.7 KiB
YAML
172 lines
4.7 KiB
YAML
---
|
|
- name: PVE Web Interface Diagnosis
|
|
hosts: pve_cluster
|
|
gather_facts: yes
|
|
tasks:
|
|
- name: Check PVE web services status
|
|
systemd:
|
|
name: "{{ item }}"
|
|
state: started
|
|
register: pve_web_services
|
|
loop:
|
|
- pveproxy
|
|
- pvedaemon
|
|
- pve-cluster
|
|
- pve-firewall
|
|
|
|
- name: Display PVE web services status
|
|
debug:
|
|
msg: |
|
|
{{ item.item }}: {{ item.status.ActiveState }}
|
|
loop: "{{ pve_web_services.results }}"
|
|
|
|
- name: Check PVE web port status
|
|
wait_for:
|
|
port: 8006
|
|
host: "{{ ansible_default_ipv4.address }}"
|
|
timeout: 5
|
|
register: pve_web_port
|
|
ignore_errors: yes
|
|
|
|
- name: Display PVE web port status
|
|
debug:
|
|
msg: "PVE Web Port 8006: {{ 'OPEN' if pve_web_port.rc == 0 else 'CLOSED' }}"
|
|
|
|
- name: Check listening ports
|
|
command: netstat -tlnp | grep :8006
|
|
register: listening_ports
|
|
ignore_errors: yes
|
|
|
|
- name: Display listening ports
|
|
debug:
|
|
msg: "{{ listening_ports.stdout_lines }}"
|
|
when: listening_ports.rc == 0
|
|
|
|
- name: Check PVE firewall status
|
|
command: pve-firewall status
|
|
register: firewall_status
|
|
ignore_errors: yes
|
|
|
|
- name: Display firewall status
|
|
debug:
|
|
msg: "{{ firewall_status.stdout_lines }}"
|
|
when: firewall_status.rc == 0
|
|
|
|
- name: Check PVE firewall rules
|
|
command: pve-firewall show
|
|
register: firewall_rules
|
|
ignore_errors: yes
|
|
|
|
- name: Display firewall rules
|
|
debug:
|
|
msg: "{{ firewall_rules.stdout_lines }}"
|
|
when: firewall_rules.rc == 0
|
|
|
|
- name: Check network interfaces
|
|
command: ip addr show
|
|
register: network_interfaces
|
|
|
|
- name: Display network interfaces
|
|
debug:
|
|
msg: "{{ network_interfaces.stdout_lines }}"
|
|
|
|
- name: Check routing table
|
|
command: ip route show
|
|
register: routing_table
|
|
|
|
- name: Display routing table
|
|
debug:
|
|
msg: "{{ routing_table.stdout_lines }}"
|
|
|
|
- name: Test connectivity to PVE web port from other nodes
|
|
command: nc -zv {{ inventory_hostname }} 8006
|
|
delegate_to: "{{ item }}"
|
|
loop: "{{ groups['pve_cluster'] }}"
|
|
when: item != inventory_hostname
|
|
register: connectivity_test
|
|
ignore_errors: yes
|
|
|
|
- name: Display connectivity test results
|
|
debug:
|
|
msg: "{{ item.item }} -> {{ inventory_hostname }}:8006 {{ 'SUCCESS' if item.rc == 0 else 'FAILED' }}"
|
|
loop: "{{ connectivity_test.results }}"
|
|
when: connectivity_test is defined
|
|
|
|
- name: Check PVE cluster status
|
|
command: pvecm status
|
|
register: cluster_status
|
|
ignore_errors: yes
|
|
|
|
- name: Display cluster status
|
|
debug:
|
|
msg: "{{ cluster_status.stdout_lines }}"
|
|
when: cluster_status.rc == 0
|
|
|
|
- name: Check PVE logs for errors
|
|
command: journalctl -u pveproxy -n 20 --no-pager
|
|
register: pveproxy_logs
|
|
ignore_errors: yes
|
|
|
|
- name: Display PVE proxy logs
|
|
debug:
|
|
msg: "{{ pveproxy_logs.stdout_lines }}"
|
|
when: pveproxy_logs.rc == 0
|
|
|
|
- name: Check system logs for network errors
|
|
command: journalctl -n 50 --no-pager | grep -i "route\|network\|connection"
|
|
register: network_logs
|
|
ignore_errors: yes
|
|
|
|
- name: Display network error logs
|
|
debug:
|
|
msg: "{{ network_logs.stdout_lines }}"
|
|
when: network_logs.rc == 0
|
|
|
|
- name: Check if PVE web interface is accessible locally
|
|
uri:
|
|
url: "https://localhost:8006"
|
|
method: GET
|
|
validate_certs: no
|
|
timeout: 10
|
|
register: local_web_test
|
|
ignore_errors: yes
|
|
|
|
- name: Display local web test result
|
|
debug:
|
|
msg: "Local PVE web access: {{ 'SUCCESS' if local_web_test.status == 200 else 'FAILED' }}"
|
|
when: local_web_test is defined
|
|
|
|
- name: Check PVE configuration files
|
|
stat:
|
|
path: /etc/pve/local/pve-ssl.key
|
|
register: ssl_key_stat
|
|
|
|
- name: Check SSL certificate
|
|
stat:
|
|
path: /etc/pve/local/pve-ssl.pem
|
|
register: ssl_cert_stat
|
|
|
|
- name: Display SSL status
|
|
debug:
|
|
msg: |
|
|
SSL Key exists: {{ ssl_key_stat.stat.exists }}
|
|
SSL Cert exists: {{ ssl_cert_stat.stat.exists }}
|
|
|
|
- name: Check PVE datacenter configuration
|
|
stat:
|
|
path: /etc/pve/datacenter.cfg
|
|
register: datacenter_cfg
|
|
|
|
- name: Display datacenter config status
|
|
debug:
|
|
msg: "Datacenter config exists: {{ datacenter_cfg.stat.exists }}"
|
|
|
|
- name: Check PVE cluster configuration
|
|
stat:
|
|
path: /etc/pve/corosync.conf
|
|
register: corosync_conf
|
|
|
|
- name: Display corosync config status
|
|
debug:
|
|
msg: "Corosync config exists: {{ corosync_conf.stat.exists }}"
|