У меня очень простой сценарий на /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
ошибок не показывает.
Ответ из комментариев: есть проблема с разрешением, поэтому доступный пользователь не может получить доступ к файлам сертификатов.