Ansible事实发现返回一些值为空

我在/etc/ansible/facts.d有一个非常简单的脚本,用于发现主机上的本地SSL证书。 这是代码:

 #!/bin/sh echo "{ \"testkey\": \"testvalue\", \"crt\": \"$(/usr/bin/base64 -w 0 /etc/kubernetes/pki/apiserver.crt)\", \"key\": \"$(/usr/bin/base64 -w 0 /etc/kubernetes/pki/apiserver.key)\" }" 

当我用$> /etc/ansible/facts.d/apiserver_ssl_facts.fact自己运行它时,它会按照预期输出所有的值。 但是,当Ansible运行它时,只有testkey有一个值,而其他的是一个空string""

 ansible@bastion-1:~/ansible$ ansible -m setup <host> -a "filter=ansible_local" <host> | SUCCESS => { "ansible_facts": { "ansible_local": { "apiserver_ssl_facts": { "crt": "", "key": "", "testkey": "testvalue" } } }, "changed": false } 

使用-vvvv非常详细地运行Ansible不会显示任何错误。

从评论回答:有一个权限问题,所以有用的用户不能访问证书文件。