mgmt/pve/unidirectional-access-diagn...

146 lines
3.9 KiB
YAML

---
- name: Unidirectional Access Diagnosis
hosts: pve_cluster
gather_facts: yes
tasks:
- name: Check PVE proxy binding configuration
command: ss -tlnp | grep :8006
register: pve_proxy_binding
- name: Display PVE proxy binding
debug:
msg: "{{ pve_proxy_binding.stdout_lines }}"
- name: Check PVE firewall status
command: pve-firewall status
register: firewall_status
- name: Display firewall status
debug:
msg: "{{ firewall_status.stdout_lines }}"
- 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 iptables rules
command: iptables -L -n
register: iptables_rules
ignore_errors: yes
- name: Display iptables rules
debug:
msg: "{{ iptables_rules.stdout_lines }}"
when: iptables_rules.rc == 0
- name: Check PVE proxy configuration
stat:
path: /etc/pveproxy.conf
register: proxy_config_stat
- name: Display proxy config status
debug:
msg: "Proxy config exists: {{ proxy_config_stat.stat.exists }}"
- name: Check PVE proxy logs
command: journalctl -u pveproxy -n 20 --no-pager
register: proxy_logs
ignore_errors: yes
- name: Display proxy logs
debug:
msg: "{{ proxy_logs.stdout_lines }}"
when: proxy_logs.rc == 0
- name: Test local access to PVE web
uri:
url: "https://localhost:8006"
method: GET
validate_certs: no
timeout: 10
register: local_access
ignore_errors: yes
- name: Display local access result
debug:
msg: "Local access: {{ 'SUCCESS' if local_access.status == 200 else 'FAILED' }}"
- name: Test access from other nodes to PVE
uri:
url: "https://pve:8006"
method: GET
validate_certs: no
timeout: 10
register: remote_access
ignore_errors: yes
when: inventory_hostname != 'pve'
- name: Display remote access result
debug:
msg: "{{ inventory_hostname }} -> pve: {{ 'SUCCESS' if remote_access.status == 200 else 'FAILED' }}"
when: inventory_hostname != 'pve' and remote_access is defined
- name: Check PVE cluster communication
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 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 from PVE to other nodes
command: ping -c 3 {{ item }}
loop: "{{ groups['pve_cluster'] }}"
when: item != inventory_hostname
register: ping_tests
ignore_errors: yes
- name: Display ping test results
debug:
msg: "{{ inventory_hostname }} -> {{ item.item }}: {{ 'SUCCESS' if item.rc == 0 else 'FAILED' }}"
loop: "{{ ping_tests.results }}"
when: ping_tests is defined
- name: Check PVE proxy process details
command: ps aux | grep pveproxy
register: proxy_processes
- name: Display proxy processes
debug:
msg: "{{ proxy_processes.stdout_lines }}"
- name: Check PVE proxy configuration files
find:
paths: /etc/pve
patterns: "*.conf"
file_type: file
register: pve_config_files
- name: Display PVE config files
debug:
msg: "{{ pve_config_files.files | map(attribute='path') | list }}"