I am testing if i can do a custom fact, the static content fact either in JSON/INI file works, however if i add another file to the /etc/ansible/facts.d directory to echo the similar content it is not working some experiments there is an error reading the file, sometimes it just ignores the file completely. what am i doing wrong?
“If a remotely managed system has an “/etc/ansible/facts.d” directory, any files in this directory ending in ”.fact”, can be JSON, INI, or executable files returning JSON, and these can supply local facts in Ansible.”
I did try with JSON format initially. my main mistake is the name of the file extension facts " with an extra s" instead of fact and then not following standard JSON format throughly the initial, and end curly bracket, now it works when i do as below :
I start learning Ansible with a Puppet background, so the concept of executable facts is well-known. Sometimes it is easier to write a little shell script for a custom fact, so my question is, is it planned to support INI format as output for executable facts? It would make easier writing custom facts in shell.
Michael can correct me if I'm wrong but I believe we're moving more
and more to json for communicating between modules and ansible core.
So we probably wouldn't be adding additional use of ini at that level.
Note that for simple return values, (which is hopefully all you're
doing with ini json is only a little harder to generate in shell.
Substitute something like this:
# ini:
printf '[myfact]\n'
for key in foo bar ; do
for value in `seq 1 2` ; do
printf '%s%s=%s\n' $key $value $value
done
done
with this:
# json
output='{ "myfact": { '
for key in foo bar ; do
for value in `seq 1 2` ; do
output+=`printf '"%s%s":%s,' $key $value $value`
done
done
output=`echo $output | sed 's/,$//'`
printf '%s } }\n' "$output"
JSON has slightly more verbosity (the curly braces to mark where the
data structures begin and end) and you have to add a bit of logic to
make sure your sequence of values does not end with a comma but it's
not too bad. Nothing like *shudder* writing XML in shell