먼저 간단히 설명하자면: 대상 호스트: RHEL7, 커널 3.10, Python2.7
대상 호스트에는 다음과 같은 작업을 수행하는 Perl 스크립트(특정 사용자가 실행)가 있습니다.
kdestroy -A
kinit user@domain -kt path_to_keytab
호스트 컴퓨터에서 ("scriptrunner" 사용자로서) 오류 없이 모든 명령을 실행할 수 있습니다. 그러나 Ansible을 사용할 때 "kinit: 기본 ccache를 가져올 때 영구 키링 이름에 잘못된 UID" 오류가 발생합니다.
플레이북은 자격 증명과 함께 "sudo" 에스컬레이션 모드를 사용하여 AnsibleTower에서 실행되고 플레이북 자체는 Turn:yes 및 Turn_user:scriptrunner를 사용하므로 사용자는 터미널에서 명령을 실행할 때 동일합니다.
명령 모듈을 사용하여 명령을 실행해 보았습니다.
command: /bin/kdestory -A and
command /bin/kinit someuser@domain -kt path_to_keytab.
또한 전체 스크립트를 다음과 같이 실행해 보았습니다: 명령: /bin/bash -c -l thescript.sh. 결과는 항상 동일합니다.
왜 이런거야? 어떤 아이디어가 있나요?
답변1
실행해도 unset KRB5CCNAME
문제가 해결되지 않으면 처음으로 kinit 또는 klist를 사용하기 전에 필요할 수 있는 임시 Kerberos 자격 증명 캐시를 생성할 수 있습니다.
export KRB5CCNAME=`mktemp`
그래도 문제가 해결되지 않으면 "default_ccache_name" 값을 /etc/krb5.conf
로컬 파일로 변경해 보세요.
[libdefaults]
# ...
# default_ccache_name = KEYRING:persistent:%{uid}
default_ccache_name = /tmp/krb5cc_%{uid}