Ansible:自定义事实 - 将事实加载为 JSON 或 ini 时出错
Ansible: Custom facts - error loading facts as JSON or ini
shell> ansible ubuntu-c -m setup -m "filter=ansible_local"
...
我正在尝试练习 Ansible 自定义事实:/etc/ansible/facts.d/try.fact
#!bin/bash
echo {\""thing\"" : \""value\""}
但不断收到此错误:
"try": "error loading facts as JSON or ini - please check content: /etc/ansible/facts.d/try.fact"
当我尝试使用 :
执行它时的想法
sh ./etc/ansible/facts.d/try.fact
它 returns 正确的 JSON 格式:
shell> sh /etc/ansible/facts.d/try.fact
{"thing": "value"}
如 the documentation 中所述,如果您希望文件被执行,则应将其标记为可执行文件,否则会将其视为包含结构化数据的静态文件。要对此进行测试,您应该直接执行文件 (/etc/ansible/facts.d/try.fact
),而不是将其传递给 sh
.
chmod +x /etc/ansible/facts.d/try.fact
/etc/ansible/facts.d/try.fact
让我们使用一个简单的剧本
- hosts: localhost
gather_facts: true
tasks:
- debug:
var: ansible_local
sh/bash 和 python scripts
shell> cat /etc/ansible/facts.d/try-exe.fact
#!/bin/sh
printf '%s' '{"thing": "value"}'
shell> cat /etc/ansible/facts.d/try-exe.fact
#!/usr/bin/env python
import sys
print('{"thing": "value"}')
shell> /etc/ansible/facts.d/try-exe.fact
{"thing": "value"}
按预期工作
TASK [debug] ******************************************************
ok: [localhost] =>
ansible_local:
try-exe:
thing: value
此外,静态文件 JSON 和 INI 都按预期工作
shell> cat /etc/ansible/facts.d/try-json.fact
{"thing": "value"}
shell> cat /etc/ansible/facts.d/try-ini.fact
[default]
thing=value
给予
TASK [debug] *******************************************************
ok: [localhost] =>
ansible_local:
try-ini:
default:
thing: value
try-json:
thing: value
shell> ansible ubuntu-c -m setup -m "filter=ansible_local"
...
我正在尝试练习 Ansible 自定义事实:/etc/ansible/facts.d/try.fact
#!bin/bash
echo {\""thing\"" : \""value\""}
但不断收到此错误:
"try": "error loading facts as JSON or ini - please check content: /etc/ansible/facts.d/try.fact"
当我尝试使用 :
执行它时的想法sh ./etc/ansible/facts.d/try.fact
它 returns 正确的 JSON 格式:
shell> sh /etc/ansible/facts.d/try.fact
{"thing": "value"}
如 the documentation 中所述,如果您希望文件被执行,则应将其标记为可执行文件,否则会将其视为包含结构化数据的静态文件。要对此进行测试,您应该直接执行文件 (/etc/ansible/facts.d/try.fact
),而不是将其传递给 sh
.
chmod +x /etc/ansible/facts.d/try.fact
/etc/ansible/facts.d/try.fact
让我们使用一个简单的剧本
- hosts: localhost
gather_facts: true
tasks:
- debug:
var: ansible_local
sh/bash 和 python scripts
shell> cat /etc/ansible/facts.d/try-exe.fact
#!/bin/sh
printf '%s' '{"thing": "value"}'
shell> cat /etc/ansible/facts.d/try-exe.fact
#!/usr/bin/env python
import sys
print('{"thing": "value"}')
shell> /etc/ansible/facts.d/try-exe.fact
{"thing": "value"}
按预期工作
TASK [debug] ******************************************************
ok: [localhost] =>
ansible_local:
try-exe:
thing: value
此外,静态文件 JSON 和 INI 都按预期工作
shell> cat /etc/ansible/facts.d/try-json.fact
{"thing": "value"}
shell> cat /etc/ansible/facts.d/try-ini.fact
[default]
thing=value
给予
TASK [debug] *******************************************************
ok: [localhost] =>
ansible_local:
try-ini:
default:
thing: value
try-json:
thing: value