From d56b0ec0dad22cf1588fb452cbbbd8214fcb2219 Mon Sep 17 00:00:00 2001 From: Kevin Thompson Date: Thu, 7 Aug 2025 14:29:52 -0500 Subject: [PATCH] SIGH --- roles/inventory/linode/tasks/main.yml | 212 ++++++-------------------- 1 file changed, 49 insertions(+), 163 deletions(-) diff --git a/roles/inventory/linode/tasks/main.yml b/roles/inventory/linode/tasks/main.yml index b9b8997..68355aa 100644 --- a/roles/inventory/linode/tasks/main.yml +++ b/roles/inventory/linode/tasks/main.yml @@ -39,43 +39,6 @@ delegate_to: localhost changed_when: true -- name: Show script execution details - ansible.builtin.debug: - msg: | - Script execution results: - Return code: {{ linode_inventory_result.rc }} - Stdout length: {{ linode_inventory_result.stdout | length }} - Stderr length: {{ linode_inventory_result.stderr | length }} - -- name: Show stderr if present - ansible.builtin.debug: - msg: "Script stderr: {{ linode_inventory_result.stderr }}" - when: linode_inventory_result.stderr | length > 0 - -- name: Show stdout if present - ansible.builtin.debug: - msg: "Script stdout: {{ linode_inventory_result.stdout }}" - when: linode_inventory_result.stdout | length > 0 - -- name: Test API token directly - ansible.builtin.uri: - url: "https://api.linode.com/v4/linode/instances" - method: GET - headers: - Authorization: "Bearer {{ linode_api_token }}" - Content-Type: "application/json" - return_content: yes - status_code: [200, 401, 403] - register: direct_api_test - delegate_to: localhost - -- name: Display direct API test results - ansible.builtin.debug: - msg: | - Direct API test results: - Status: {{ direct_api_test.status }} - Response: {{ direct_api_test.json | default('No JSON response') }} - - name: Parse inventory JSON (only if stdout exists) ansible.builtin.set_fact: linode_inventory_data: "{{ linode_inventory_result.stdout | from_json }}" @@ -94,26 +57,12 @@ hosts: [] when: linode_inventory_data is not defined -- name: Save inventory to file - ansible.builtin.copy: - content: "{{ linode_inventory_data | to_nice_json }}" - dest: "{{ temp_inventory_path }}" - mode: '0644' - delegate_to: localhost - - name: Display inventory summary ansible.builtin.debug: msg: | Linode Dynamic Inventory Summary: Total hosts discovered: {{ linode_inventory_data._meta.hostvars | length }} Groups created: {{ linode_inventory_data.keys() | reject('equalto', '_meta') | list | length }} - Inventory saved to: {{ temp_inventory_path }} - API Token status: {{ 'Set (' + (linode_api_token[:8] + '...' if linode_api_token | length > 8 else linode_api_token) + ')' if linode_api_token is defined else 'NOT SET' }} - -- name: Show raw script output for debugging - ansible.builtin.debug: - var: linode_inventory_result.stdout - when: linode_inventory_result.stdout | length > 0 - name: Show discovered hosts ansible.builtin.debug: @@ -123,21 +72,6 @@ label: "{{ item.key }}" when: linode_inventory_data._meta.hostvars | length > 0 -- name: Create inventory directory in project - ansible.builtin.file: - path: "/runner/project/inventory" - state: directory - mode: '0755' - delegate_to: localhost - -- name: Create JSON inventory file in project - ansible.builtin.copy: - content: "{{ linode_inventory_data | to_nice_json }}" - dest: "/runner/project/inventory/linode_hosts.json" - mode: '0644' - delegate_to: localhost - when: linode_inventory_data is defined - - name: Debug current directory and Git status ansible.builtin.shell: | echo "Current directory: $(pwd)" && @@ -151,58 +85,6 @@ delegate_to: localhost ignore_errors: true -- name: Display debug information - ansible.builtin.debug: - msg: | - Debug Git Information: - {{ debug_git_info.stdout }} - - Git Config Result: - {{ git_config_result.stdout if git_config_result is defined else 'Not available' }} - - Git Commit Result: - {{ git_commit_result.stdout if git_commit_result is defined else 'Not available' }} - -- name: Check if inventory file was created - ansible.builtin.stat: - path: "inventory/linode_hosts.json" - register: inventory_file_check - delegate_to: localhost - -- name: Display inventory file status - ansible.builtin.debug: - msg: | - Inventory file status: - - Path: inventory/linode_hosts.json - - Exists: {{ inventory_file_check.stat.exists }} - - Size: {{ inventory_file_check.stat.size | default(0) }} bytes - - Location: {{ ansible_env.PWD | default('unknown') }}/inventory/linode_hosts.json - -- name: Show current Git status and try manual push - ansible.builtin.shell: | - echo "=== Current working directory ===" - pwd - echo "=== Git status ===" - git status - echo "=== Git log (last commit) ===" - git log --oneline -1 - echo "=== Attempting to push ===" - git push origin HEAD 2>&1 || echo "Push failed - check SSH access" - register: manual_git_push - delegate_to: localhost - ignore_errors: true - when: inventory_file_check.stat.exists - -- name: Display Git push results - ansible.builtin.debug: - msg: | - Manual Git Push Results: - {{ manual_git_push.stdout }} - - Error (if any): - {{ manual_git_push.stderr | default('No errors') }} - when: manual_git_push is defined - - name: Initialize Git if needed and configure ansible.builtin.shell: | if [ ! -d ".git" ]; then @@ -233,20 +115,11 @@ echo "=== SSH config ===" ls -la ~/.ssh/ 2>/dev/null || echo "No .ssh directory" echo "=== Test SSH to git.ewnix.net ===" - ssh -T git@git.ewnix.net -o ConnectTimeout=10 -o StrictHostKeyChecking=no 2>&1 || echo "SSH test completed with exit code $?" + timeout 10 ssh -T git@git.ewnix.net -o ConnectTimeout=5 -o StrictHostKeyChecking=no 2>&1 || echo "SSH test completed" register: ssh_debug delegate_to: localhost ignore_errors: true -- name: Display SSH debug information - ansible.builtin.debug: - msg: | - SSH Debug Results: - {{ ssh_debug.stdout }} - - SSH Errors: - {{ ssh_debug.stderr | default('No SSH errors') }} - - name: Create inventory directory ansible.builtin.file: path: "inventory" @@ -262,17 +135,26 @@ delegate_to: localhost when: linode_inventory_data is defined -- name: Attempt to commit inventory (simplified) +- name: Check if inventory file was created + ansible.builtin.stat: + path: "inventory/linode_hosts.json" + register: inventory_file_check + delegate_to: localhost + +- name: Attempt to commit and push inventory ansible.builtin.shell: | git_root=$(git rev-parse --show-toplevel 2>/dev/null || echo "") if [ -n "$git_root" ]; then cd "$git_root" && + echo "Working in git repository: $git_root" && git add inventory/linode_hosts.json && if git diff --staged --quiet; then echo "No changes to commit" else git commit -m "Update Linode inventory - $(date '+%Y-%m-%d %H:%M:%S') [AWX]" && - echo "Inventory committed locally (push skipped for now)" + echo "Committed successfully, attempting push..." && + timeout 30 git push origin HEAD && + echo "Push successful!" fi else echo "No git repository found - inventory file created but not committed" @@ -283,42 +165,46 @@ when: - linode_inventory_data is defined - push_to_git | default(true) + - inventory_file_check.stat.exists -- name: Display Git operation result +- name: Display comprehensive debug information ansible.builtin.debug: msg: | - Git operation result: - Return code: {{ git_commit_result.rc }} - Output: {{ git_commit_result.stdout }} - Error: {{ git_commit_result.stderr | default('None') }} - when: git_commit_result is defined - -- name: Trigger AWX project sync (if AWX API available) - ansible.builtin.uri: - url: "{{ awx_host | default('https://localhost') }}/api/v2/projects/{{ awx_project_id }}/update/" - method: POST - headers: - Authorization: "Bearer {{ awx_token }}" - Content-Type: "application/json" - body_format: json - body: {} - status_code: [200, 201, 202] - validate_certs: false - register: project_sync_result - delegate_to: localhost - ignore_errors: true - when: - - awx_api_integration | default(false) - - awx_token is defined - - awx_project_id is defined - -- name: Display project sync result - ansible.builtin.debug: - msg: | - AWX Project sync triggered: - Status: {{ project_sync_result.status | default('Not attempted') }} - Response: {{ project_sync_result.json | default('No response') }} - when: project_sync_result is defined + === COMPREHENSIVE DEBUG RESULTS === + + Current Directory Info: + {% if debug_git_info is defined and debug_git_info.stdout is defined %} + {{ debug_git_info.stdout }} + {% else %} + Debug info not available + {% endif %} + + SSH Configuration: + {% if ssh_debug is defined and ssh_debug.stdout is defined %} + {{ ssh_debug.stdout }} + {% else %} + SSH debug not available + {% endif %} + + Git Configuration: + {% if git_config_result is defined and git_config_result.stdout is defined %} + {{ git_config_result.stdout }} + {% else %} + Git config not available + {% endif %} + + Git Commit/Push Results: + {% if git_commit_result is defined and git_commit_result.stdout is defined %} + {{ git_commit_result.stdout }} + {% else %} + Git commit result not available + {% endif %} + + Inventory File Status: + - Exists: {{ inventory_file_check.stat.exists if inventory_file_check is defined else 'Unknown' }} + {% if inventory_file_check is defined and inventory_file_check.stat.exists %} + - Size: {{ inventory_file_check.stat.size }} bytes + {% endif %} - name: Clean up temporary script ansible.builtin.file: