Ansible Automation Platform 문제 해결
Ansible Automation Platform 문제 해결
초록
머리말 링크 복사링크가 클립보드에 복사되었습니다!
Ansible Automation Platform 문제 해결 가이드를 사용하여 Ansible Automation Platform 설치 문제를 해결합니다.
Red Hat 문서에 관한 피드백 제공 링크 복사링크가 클립보드에 복사되었습니다!
이 문서를 개선하기 위한 제안이 있거나 오류를 찾을 수 있는 경우 https://access.redhat.com 에서 기술 지원에 문의하여 요청을 열 수 있습니다.
1장. 문제 진단 링크 복사링크가 클립보드에 복사되었습니다!
Ansible Automation Platform 문제 해결을 시작하려면 OpenShift Container Platform에서 must-gather 명령을 사용하거나 VM 기반 설치에서 sos 유틸리티를 사용하여 구성 및 진단 정보를 수집합니다. 이러한 유틸리티의 출력을 지원 케이스에 연결할 수 있습니다.
1.1. must-gather 명령을 사용하여 OpenShift Container Platform에서 Ansible Automation Platform 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
oc adm must-gather CLI(명령줄 인터페이스) 명령은 OpenShift Container Platform에 배포된 Ansible Automation Platform 설치에서 정보를 수집합니다. 리소스 정의 및 서비스 로그를 포함하여 문제를 디버깅하는 데 필요한 정보를 수집합니다.
oc adm must-gather CLI 명령을 실행하면 지원 케이스의 문제를 해결하거나 연결하는 데 사용할 수 있는 수집된 데이터가 포함된 새 디렉터리가 생성됩니다.
OpenShift 환경에서 registry.redhat.io 에 액세스할 수 없고 must-gather 명령을 실행할 수 없는 경우 대신 oc adm inspect 명령을 실행합니다.
사전 요구 사항
-
OpenShift CLI(
oc)가 설치되어 있어야 합니다.
프로세스
클러스터에 로그인합니다.
oc login <openshift_url>
oc login <openshift_url>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 클러스터의 액세스 수준에 따라 다음 명령 중 하나를 실행합니다.
전체 클러스터에서
must-gather를 실행합니다.oc adm must-gather --image=registry.redhat.io/ansible-automation-platform-25/aap-must-gather-rhel8 --dest-dir <dest_dir>
oc adm must-gather --image=registry.redhat.io/ansible-automation-platform-25/aap-must-gather-rhel8 --dest-dir <dest_dir>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
--image는 데이터를 수집하는 이미지를 지정합니다. -
--dest-dir은 출력의 디렉터리를 지정합니다.
-
클러스터의 특정 네임스페이스에 대해
must-gather를 실행합니다.oc adm must-gather --image=registry.redhat.io/ansible-automation-platform-25/aap-must-gather-rhel8 --dest-dir <dest_dir> – /usr/bin/ns-gather <namespace>
oc adm must-gather --image=registry.redhat.io/ansible-automation-platform-25/aap-must-gather-rhel8 --dest-dir <dest_dir> – /usr/bin/ns-gather <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- /usr/bin/ns-gather는must-gather데이터 수집을 지정된 네임스페이스로 제한합니다.
-
must-gather아카이브를 지원 케이스에 연결하려면 먼저 생성된must-gather디렉터리에서 압축 파일을 생성하고 지원 케이스에 연결합니다.예를 들어 Linux 운영 체제를 사용하는 컴퓨터에서 다음 명령을 실행하여 <
must-gather-local.5421342344627712289/>를must-gather디렉터리 이름으로 교체합니다.tar cvaf must-gather.tar.gz <must-gather.local.5421342344627712289/>
$ tar cvaf must-gather.tar.gz <must-gather.local.5421342344627712289/>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2. sos 보고서를 생성하여 VM 기반 설치에서 Ansible Automation Platform 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
sos 유틸리티는 VM 기반 설치의 Ansible Automation Platform에서 구성, 진단 및 문제 해결 데이터를 수집합니다.
sos 유틸리티 설치 및 사용에 대한 자세한 내용은 기술 지원을 위한 sos 보고서 생성 을 참조하십시오.
2장. 자동화 컨트롤러 문제 해결을 위한 리소스 링크 복사링크가 클립보드에 복사되었습니다!
다음 리소스를 사용하여 자동화 컨트롤러의 문제를 해결합니다.
- 자동화 컨트롤러 문제 해결에 대한 자세한 내용은 자동화 실행 구성에서 자동화 컨트롤러 문제 해결을 참조하십시오.
- 자동화 컨트롤러의 성능 문제 해결에 대한 자세한 내용은 자동화 실행 구성 의 자동화 컨트롤러에 대한 성능 문제 해결을 참조하십시오.
3장. 백업 및 복구 링크 복사링크가 클립보드에 복사되었습니다!
이 정보를 사용하여 백업 및 복구 문제를 해결합니다.
4장. 실행 환경 링크 복사링크가 클립보드에 복사되었습니다!
실행 환경의 문제를 해결합니다.
4.1. 문제 - 프라이빗 자동화 허브에서 실행 환경 이미지에 "컨트롤러에서 사용" 옵션을 선택할 수 없습니다 링크 복사링크가 클립보드에 복사되었습니다!
프라이빗 자동화 허브 에서 실행 환경 이미지에 컨트롤러 옵션 사용은 사용할 수 없습니다. 또한 "사용 가능한 컨트롤러가 없음"이라는 오류 메시지가 표시됩니다.
이 문제를 해결하려면 자동화 컨트롤러를 프라이빗 자동화 허브 인스턴스에 연결합니다.
프로세스
프라이빗 자동화 허브에서
/etc/pulp/settings.py파일을 변경하고 구성에 따라 다음 매개변수 중 하나를 추가합니다.단일 컨트롤러
CONNECTED_ANSIBLE_CONTROLLERS = ['<https://my.controller.node>']
CONNECTED_ANSIBLE_CONTROLLERS = ['<https://my.controller.node>']Copy to Clipboard Copied! Toggle word wrap Toggle overflow 로드 밸런서 뒤에 있는 많은 컨트롤러
CONNECTED_ANSIBLE_CONTROLLERS = ['<https://my.controller.loadbalancer>']
CONNECTED_ANSIBLE_CONTROLLERS = ['<https://my.controller.loadbalancer>']Copy to Clipboard Copied! Toggle word wrap Toggle overflow 로드 밸런서가 없는 많은 컨트롤러
CONNECTED_ANSIBLE_CONTROLLERS = ['<https://my.controller.node1>', '<https://my.controller2.node2>']
CONNECTED_ANSIBLE_CONTROLLERS = ['<https://my.controller.node1>', '<https://my.controller2.node2>']Copy to Clipboard Copied! Toggle word wrap Toggle overflow
모든 프라이빗 자동화 허브 서비스를 중지합니다.
systemctl stop pulpcore.service pulpcore-api.service pulpcore-content.service pulpcore-worker@1.service pulpcore-worker@2.service nginx.service redis.service
# systemctl stop pulpcore.service pulpcore-api.service pulpcore-content.service pulpcore-worker@1.service pulpcore-worker@2.service nginx.service redis.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 모든 프라이빗 자동화 허브 서비스를 다시 시작하십시오.
systemctl start pulpcore.service pulpcore-api.service pulpcore-content.service pulpcore-worker@1.service pulpcore-worker@2.service nginx.service redis.service
# systemctl start pulpcore.service pulpcore-api.service pulpcore-content.service pulpcore-worker@1.service pulpcore-worker@2.service nginx.service redis.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 검증
- 이제 프라이빗 자동화 허브 에서 Controller에서 Use를 사용할 수 있는지 확인합니다.
5장. 설치 링크 복사링크가 클립보드에 복사되었습니다!
설치 문제를 해결합니다.
5.1. 문제 - Ansible Automation Platform 설치 프로그램과 함께 제공되는 특정 패키지를 찾을 수 없습니다 링크 복사링크가 클립보드에 복사되었습니다!
Ansible Automation Platform 설치 프로그램과 함께 제공되는 특정 패키지를 찾을 수 없거나 "구성에 의해 비활성화됨" 메시지가 표시됩니다.
이 문제를 해결하려면 명령줄에서 subscription-manager 명령을 사용하여 리포지토리를 활성화합니다. 이 문제 해결에 대한 자세한 내용은 액세스 관리 및 인증 에서 Red Hat Ansible Automation Platform 서브스크립션 연결 섹션을 참조하십시오.
6장. Jobs 링크 복사링크가 클립보드에 복사되었습니다!
작업 문제를 해결합니다.
6.1. 문제 - "오류!에서 모듈/작업을 해결할 수 없음 오류 메시지로 작업이 실패합니다. 링크 복사링크가 클립보드에 복사되었습니다!
"ERROR! could't resolve module/action 'module name'이라는 오류 메시지와 함께 작업이 실패합니다. 이는 종종 철자가 잘못되었거나, 컬렉션이 없거나, 잘못된 모듈 경로를 나타냅니다.
이 오류는 모듈과 연결된 컬렉션이 실행 환경에서 누락된 경우 발생할 수 있습니다.
권장되는 해결 방법은 사용자 정의 실행 환경을 만들고 해당 실행 환경 내에 필요한 컬렉션을 추가하는 것입니다. 실행 환경 생성에 대한 자세한 내용은 실행 환경 생성 및 사용에 Ansible 빌더 사용을 참조하십시오.
또는 다음 단계를 완료할 수 있습니다.
프로세스
-
프로젝트 리포지토리 내에
컬렉션폴더를 생성합니다. collections폴더 내에requirements.yml파일을 추가하고 컬렉션을 추가합니다.collections: - <collection_name>
collections: - <collection_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2. 문제 - "권한 에스컬레이션 프롬프트를 기다리는 시간 제한 (12s) 오류 메시지로 작업이 실패합니다. 링크 복사링크가 클립보드에 복사되었습니다!
이 오류는 시간 초과 값이 너무 작으면 작업이 완료되기 전에 중지될 때 발생할 수 있습니다. 연결 플러그인의 기본 시간 초과 값은 10 입니다.
문제를 해결하려면 다음 방법 중 하나를 완료하여 시간 초과 값을 늘립니다.
다음 변경 사항은 자동화 컨트롤러의 모든 작업에 영향을 미칩니다. 특정 프로젝트에 시간 초과 값을 사용하려면 프로젝트 디렉터리의 루트에 ansible.cfg 파일을 추가하고 timeout 매개 변수 값을 해당 ansible.cfg 파일에 추가합니다.
자동화 컨트롤러 UI에서 ANSIBLE_TIMEOUT을 환경 변수로 추가
- 자동화 컨트롤러로 이동합니다.
- 탐색 패널에서 → 를 선택합니다.
추가 환경 변수 에서 다음을 추가합니다.
{ "ANSIBLE_TIMEOUT": 60 }{ "ANSIBLE_TIMEOUT": 60 }Copy to Clipboard Copied! Toggle word wrap Toggle overflow
CLI를 사용하여 ansible.cfg 파일의 [defaults] 섹션에 시간 초과 값을 추가합니다.
/etc/ansible/ansible.cfg파일을 편집하고 다음을 추가합니다.[defaults] timeout = 60
[defaults] timeout = 60Copy to Clipboard Copied! Toggle word wrap Toggle overflow
시간 초과를 사용하여 임시 명령 실행
명령줄에서 애드혹 플레이북을 실행하려면
ansible-playbook명령에--timeout플래그를 추가합니다. 예를 들면 다음과 같습니다.ansible-playbook --timeout=60 <your_playbook.yml>
# ansible-playbook --timeout=60 <your_playbook.yml>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2.1. 문제 - 자동화 컨트롤러의 작업이 보류 중 상태로 유지됨 링크 복사링크가 클립보드에 복사되었습니다!
자동화 컨트롤러에서 작업을 시작한 후에는 작업이 보류 중 상태로 유지되며 시작되지 않습니다.
작업이 보류 중 상태에서 중단될 수 있는 몇 가지 이유가 있습니다. 이 문제 해결에 대한 자세한 내용은 자동화 실행 구성에 Playbook이 보류 중 상태로 유지 됨을참조하십시오.
보류 중인 모든 작업 취소
다음 명령을 실행하여 보류 중인 모든 작업을 나열합니다.
awx-manage shell_plus
# awx-manage shell_plusCopy to Clipboard Copied! Toggle word wrap Toggle overflow >>> UnifiedJob.objects.filter(status='pending')
>>> UnifiedJob.objects.filter(status='pending')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 보류 중인 모든 작업을 취소합니다.
>>> UnifiedJob.objects.filter(status='pending').update(status='canceled')
>>> UnifiedJob.objects.filter(status='pending').update(status='canceled')Copy to Clipboard Copied! Toggle word wrap Toggle overflow
작업 ID를 사용하여 단일 작업 취소
특정 작업을 취소하려면 다음 명령을 실행하여 <
job_id>를 취소할 작업 ID로 교체합니다.awx-manage shell_plus
# awx-manage shell_plusCopy to Clipboard Copied! Toggle word wrap Toggle overflow >>> UnifiedJob.objects.filter(id=_<job_id>_).update(status='canceled')
>>> UnifiedJob.objects.filter(id=_<job_id>_).update(status='canceled')Copy to Clipboard Copied! Toggle word wrap Toggle overflow
프라이빗 자동화 허브에서 실행 환경을 사용할 때 "denied: requested access to the resource is denied, unauthorized: Insufficient permissions" 오류 메시지와 함께 작업이 실패합니다.
이 문제는 프라이빗 자동화 허브가 암호 또는 토큰으로 보호되고 레지스트리 인증 정보가 실행 환경에 할당되지 않은 경우 발생합니다.
프로세스
- 자동화 컨트롤러로 이동합니다.
- 탐색 패널에서 → 선택합니다.
- 실패한 작업 템플릿에 할당된 실행 환경을 클릭합니다.
- 클릭합니다.
- 프라이빗 자동화 허브의 적절한 레지스트리 인증 정보를 실행 환경에 할당합니다.
7장. 네트워킹 링크 복사링크가 클립보드에 복사되었습니다!
네트워킹 문제를 해결합니다.
7.1. 문제 - Ansible Automation Platform 컨테이너에 사용되는 기본 서브넷이 내부 네트워크와 충돌합니다. 링크 복사링크가 클립보드에 복사되었습니다!
Ansible Automation Platform 컨테이너에 사용된 기본 서브넷은 내부 네트워크와 충돌하므로 "호스트 경로 없음" 오류가 발생합니다.
이 문제를 해결하려면 기본 Podman 네트워킹 플러그인에서 사용하는 CIDR과 충돌하지 않도록 기본 classless 도메인 간 라우팅(CIDR) 값을 업데이트합니다.
프로세스
모든 컨트롤러 및 하이브리드 노드에서 다음 명령을 실행하여
custom.py라는 파일을 생성합니다.touch /etc/tower/conf.d/custom.py
# touch /etc/tower/conf.d/custom.pyCopy to Clipboard Copied! Toggle word wrap Toggle overflow chmod 640 /etc/tower/conf.d/custom.py
# chmod 640 /etc/tower/conf.d/custom.pyCopy to Clipboard Copied! Toggle word wrap Toggle overflow chown root:awx /etc/tower/conf.d/custom.py
# chown root:awx /etc/tower/conf.d/custom.pyCopy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/tower/conf.d/custom.py파일에 다음을 추가합니다.DEFAULT_CONTAINER_RUN_OPTIONS = ['--network', 'slirp4netns:enable_ipv6=true,cidr=192.168.1.0/24']
DEFAULT_CONTAINER_RUN_OPTIONS = ['--network', 'slirp4netns:enable_ipv6=true,cidr=192.168.1.0/24']Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
192.168.1.0/24는 이 예제에서 새 CIDR의 값입니다.
-
모든 컨트롤러 및 하이브리드 노드에서 자동화 컨트롤러 서비스를 중지하고 시작합니다.
automation-controller-service stop
# automation-controller-service stopCopy to Clipboard Copied! Toggle word wrap Toggle overflow automation-controller-service start
# automation-controller-service startCopy to Clipboard Copied! Toggle word wrap Toggle overflow 모든 컨테이너는 새 CIDR에서 시작됩니다.
7.2. SSL/TLS 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
SSL/TLS 관련 문제를 해결하려면 인증서 체인을 확인하고 올바른 인증서를 사용하여 신뢰할 수 있는 CA(인증 기관)가 인증서에 서명했는지 확인합니다.
프로세스
SSL/TLS를 통해 서버에 연결할 수 있는지 확인합니다.
다음 명령을 실행하여 SSL/TLS를 통해 서버에 연결할 수 있는지 확인하고 전체 인증서 체인을 확인합니다.
true | openssl s_client -showcerts -connect <fqdn_or_ip>:<port>
# true | openssl s_client -showcerts -connect <fqdn_or_ip>:<port>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<
;fqdn_or_ip> 및 <port>를 적절한 값으로 바꿉니다.
인증서 세부 정보를 확인합니다.
다음 명령을 실행하여 인증서의 세부 정보를 확인합니다.
openssl x509 -in <path_to_certificate> -noout -text
# openssl x509 -in <path_to_certificate> -noout -textCopy to Clipboard Copied! Toggle word wrap Toggle overflow
&
lt;path_to_certificate>를 검사하려는 인증서 파일의 경로로 바꿉니다.명령의 결과는 다음과 같은 정보를 표시합니다.
- subject - 인증서가 발행된 엔터티입니다.
- issuer - 인증서를 발급한 CA입니다.
- 유효 기간 "이전 없음" - 인증서가 발행된 날짜입니다.
- 유효 기간 "종료되지 않음" - 인증서가 만료된 날짜입니다.
신뢰할 수 있는 CA가 인증서에 서명했는지 확인합니다.
다음 명령을 실행하여 특정 인증서가 유효하고 신뢰할 수 있는 CA에서 서명했는지 확인합니다.
openssl verify -CAfile <path_to_ca_public_certificate> <path_to_server_certificate_file_to_verify>
openssl verify -CAfile <path_to_ca_public_certificate> <path_to_server_certificate_file_to_verify>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
명령에서
OK를 반환하면 인증서 파일이 유효하고 신뢰할 수 있는 CA에서 서명했음을 의미합니다.
8장. 플레이북 링크 복사링크가 클립보드에 복사되었습니다!
자동화 콘텐츠를 사용하여 플레이북을 대화형으로 해결할 수 있습니다.
자동화 콘텐츠가 있는 플레이북 문제 해결에 대한 자세한 내용은 콘텐츠 탐색 가이드의 자동화 콘텐츠로 Ansible 콘텐츠 문제 해결을 참조하십시오.
9장. 업그레이드 링크 복사링크가 클립보드에 복사되었습니다!
Ansible Automation Platform 2.6으로 업그레이드할 때 문제를 해결합니다.
Ansible Automation Platform 2.4를 2.6으로 업그레이드할 때 업그레이드가 완료되지만 로드 밸런서 뒤에서 자동화 컨트롤러를 사용하는 경우 플랫폼 게이트웨이 URL에 대한 연결이 실패합니다. 다음과 같은 오류 메시지가 표시됩니다.
컨트롤러 API에 연결하는 중 오류 발생
이 문제를 해결하려면 모든 컨트롤러 호스트에 대해 다음 작업을 수행합니다.
각 컨트롤러 호스트에 대해 settings.py 파일의
CSRF_TRUSTED_ORIGIN설정에서 플랫폼 게이트웨이 URL을 신뢰할 수 있는 소스로 추가합니다.예를 들어 플랫폼 게이트웨이 URL을
https://www.example.com로 구성한 경우 다음과 같이 settings.py 파일에 해당 URL을 추가해야 합니다.CSRF_TRUSTED_ORIGINS = ['https://appX.example.com:8443','https://www.example.com']
CSRF_TRUSTED_ORIGINS = ['https://appX.example.com:8443','https://www.example.com']Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
URL 변경 사항이 구현되도록
automation-controller-service restart명령을 사용하여 각 컨트롤러 호스트를 다시 시작합니다. 이 절차는 자동화 실행 구성에서 자동화 컨트롤러 시작, 중지 및 재시작 을 참조하십시오.