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 }}"
 |