컨텍스트는 다음과 같습니다.
다음 플레이북(이 stackoverflow 주제와 사용 편의성을 위해 하나의 작업으로 단순화됨)은 실행 위치에 따라 다른 결과를 얻었습니다. nutanix.ncp 갤럭시 컬렉션을 사용합니다(버전 1.9.0, 1.8.0, 1.7.0...에서 테스트됨).
이 ntnx_subnets_info
메소드는 프리즘 중앙 인스턴스에 있는 기존 서브넷의 모든 목록을 검색하기 위해 호출되며, 특정 VLAN의 세부 정보만 검색하기 위해 name 매개변수를 통해 필터링됩니다.
---
- 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으로 다운그레이드해 보십시오 => 여전히 동일한 결과입니다(docker가 아닌 debian에서 작동함).
- ansible 버전 비교 => 두 환경 모두 ansible 코어 2.15.4에서 실행됩니다.
- Python 버전 비교 => docker 이미지 환경은 3.9.17에 있고 데비안 서버는 3.9.2에 있습니다.
- 두 환경 모두에서 수동 컬 요청 실행 =>모든 것이 두 환경 모두에서 작동합니다
- -vvvvvv 옵션을 사용하여 플레이북을 실행하고 로그의 차이점을 비교합니다 => nutanix.ncp는 그다지 수다스럽지 않습니다. 그 너머의 스크린샷에서 볼 수 있듯이 다른 오류는 발생하지 않습니다.
질문
- Ansible API 요청을 "분석"하는 방법이 있습니까? Ansible의 Wireshark/Fiddler처럼요?
- 이 문제를 해결하려면 어떻게 해야 합니까? 한쪽에서는 작동하지만 다른 쪽에서는 작동하지 않기 때문에 일부 항목을 비교하고 차이점을 찾을 수 있기를 바랍니다.
감사해요
답변1
많은 테스트와 조사 끝에 nutanix.ncp 컬렉션 파일에서 엔터티.py를 발견했습니다. "API 응답을 json으로 변환하지 못했습니다."라는 메시지를 담당하는 파일이었습니다.
한 함수는 URL 응답 수신 코드가 >300일 때 오류 메시지를 보냅니다. Wireshark 캡처에 들어가서 네트워크 흐름에 오류가 있음을 알아냈습니다.
그런 다음 내 Docker 이미지/K8s 포드에서 내 Prism Central로의 연결을 확인하게 됩니다.
이 명령은
openssl s_client -connect fqdn_prism_central:9440
오류 메시지를 표시합니다
“ 반환 코드 확인: 20(로컬 발급자 인증서를 얻을 수 없음)"
마지막으로 Dockerfile을 통해 Docker 이미지의 인증서 체인을 업데이트하면 이제 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
꽤 힘들지만 잘 작동합니다! :)