先简单描述一下: 目标主机:RHEL7,内核3.10,Python2.7
在目标主机上,有一个 perl 脚本(由特定用户运行),除其他外,它执行以下操作:
kdestroy -A
kinit user@domain -kt path_to_keytab
在主机上,我可以(作为“scriptrunner”用户)执行所有命令,不会出现错误。然而,在使用 ansible 时,我收到“kinit:在获取默认 ccache 时持久密钥环名称中的 UID 无效”错误。
该 playbook 使用“sudo”升级模式从 AnsibleTower 运行,并使用凭证,并且 playbook 本身使用变成:yes 和变成_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
无法解决该问题,您可以创建一个临时 Kerberos 凭证缓存,这在首次使用 kinit 或 klist 之前可能需要:
export KRB5CCNAME=`mktemp`
如果这不起作用,请尝试将“default_ccache_name”的值更改/etc/krb5.conf
为本地文件:
[libdefaults]
# ...
# default_ccache_name = KEYRING:persistent:%{uid}
default_ccache_name = /tmp/krb5cc_%{uid}