我有一个非常简单的脚本,/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
有一个值,而其他的都是空字符串""
:
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
}
以非常详细的方式运行 Ansible-vvvv
不会显示任何错误。
答案1
评论中的答案:存在权限问题,因此 ansible 用户无法访问证书文件。