如何排查 Ansible 模組發送的 API 請求?

如何排查 Ansible 模組發送的 API 請求?

這是上下文:
下面的劇本(為了方便使用,簡化為這個 stackoverflow 主題的一項任務)得到了不同的結果,這取決於我在哪裡啟動它。它使用 nutanix.ncp Galaxy 集合(使用版本 1.9.0、1.8.0、1.7.0...進行測試)

呼叫此ntnx_subnets_info方法來檢索 prism 中心實例上現有子網路的所有列表,並透過 name 參數進行過濾以僅檢索特定 VLAN 的詳細資訊。

---
- name: test-get-subnet-info
  hosts: localhost

  vars:
    nutanix_host: "{{ XXXXXXX }}"
    nutanix_username: "{{ XXXXXXX }}"
    nutanix_password: "XXXXXXX "

  collections:
    - nutanix.ncp
  module_defaults:
    group/nutanix.ncp.ntnx:
      nutanix_host: "{{ XXXXXXX }}"
      nutanix_username: "{{ XXXXXXX }}"
      nutanix_password: "XXXXXXX "

  tasks:
  - name: Retrieve subnet info
    ntnx_subnets_info:
      filter:
        name: "my-VLAN"

在 Debian 11 伺服器上,此任務運作順利,如下所示在此輸入影像描述

而在我的自訂 AWX EE 上(使用 docker 進行測試,然後在 K8s 上進行測試),我收到以下錯誤,該錯誤不太明確Failed to convert API response to json
在此輸入影像描述

故障排除步驟:

  • 嘗試將 nutanix.ncp 集合從 1.9.0 降級到 1.8.0 和 1.7.0 => 仍然是相同的結果(適用於 debian,不適用於 docker)
  • 比較 ansible 版本 => 兩個環境都在 ansible core 2.15.4 上運行
  • 比較python版本=> docker映像環境是3.9.17,debian伺服器是3.9.2
  • 從兩個環境啟動手動curl請求=>一切都適用於兩種環境
  • 使用 -vvvvvv 選項啟動 playbook 並比較日誌上的差異 => nutanix.ncp 不是那麼健談,我沒有收到任何其他錯誤,正如您在後面的螢幕截圖中看到的那樣。

問題

  • 有沒有辦法「分析」Ansible API 請求?就像 Ansible 的wireshark/fiddler 一樣?
  • 我怎樣才能進一步排除並解決這個問題?因為它在一側有效,但在其他方面無效,我可能會比較一些東西並希望找到差異?

謝謝

答案1

經過多次測試和調查,剛剛在nutanix.ncp集合檔案中找到了entity.py。這是負責 msg「無法將 API 回應轉換為 json」的文件

  • 當 URL 回應收到的代碼大於 300 時,一個函數會傳送錯誤訊息。我進入了wireshark捕獲並發現網路流中存在錯誤: 在此輸入影像描述

  • 然後,它讓我檢查從我的 docker 映像/K8s pod 到我的 Prism Central 的連接。

    該命令openssl s_client -connect fqdn_prism_central:9440顯示錯誤訊息

“驗證返回碼:20(無法取得本地頒發者證書)”

  • 最後,我只需更新 docker 映像上的憑證鏈(透過 Dockerfile),現在 AWX 中一切正常。

    就我而言,由於 AWX EE 映像基於官方 awx-ee (https://quay.io/repository/ansible/awx-ee?tab=tags&tag=latest),我將以下步驟新增至我的 dockerfile 中(注意:如果您使用 CentOS 映像以外的其他內容,路徑和命令可能會有所不同):

COPY ./certificate_chain.pem /etc/pki/ca-trust/source/anchors/certificate_chain.pem
RUN chmod 644 /etc/pki/ca-trust/source/anchors/certificate_chain.pem && update-ca-trust extract

相當艱難,但效果很好! :)

相關內容