剧本的一部分如下:这是ansible playbook(main.yml)
- name: setting Info data
set_fact:
application_data:
log_file_name: "{{ log_file_name }}"
log_file_dir: "{{ log_file_dir }}"
- name: call application
custom_application:
verb: 'call'
body: "{{ application_data }}"
register: activate_output
custom_application.py:
这是从main.yml文件调用的自定义ansible应用程序。
###couple of imports
def main():
fields = {
"verb": {"required": True, "type": "str"},
"body": {"required": True, "type": "str"},
}
module = AnsibleModule(argument_spec=fields)
verb = module.params['verb']
body = yaml.load(module.params['body'])
application = application()
response = application.call(body)
module.exit_json(changed=True, meta=response)
if __name__ == '__main__':
main()
Application.py: 执行几个与应用程序相关的事情的python类。
def call(body):
application = {}
application["is_activated"]=True
return application
在main.yaml和自定义ansible模块和应用程序类
之上 fatal: [localhost]: FAILED! => {
"changed": false,
"failed": true,
"module_stderr": "",
"module_stdout": "\"changed\": true, \"meta\": {\"is_activated\": true}}\n",
"msg": "MODULE FAILURE",
"rc": 0
}
Module_stdout如下:
模块stdout我截断了下面给出的确切module_stdout:
{
"changed": false,
"failed": true,
"module_stderr": "",
"module_stdout": "{
\"invocation\": {
\"module_args\": {
\"body\": \"{
'application_id': '3f17f2a3-0510-457d-a164-72f3a71c6455',
'file_path': '/tmp/vishnu.json',
'log_file_name': '42ae1299-9cbf-49d3-82da-d2d1eb108eef-2017-09-09-11:26:03.log',
'log_file_dir': '/home/oracle/logs/oracle/'
}\",
\"verb\": \"activate\"
}
},
\"changed\": false,
\"meta\": {
\"is_activated\": true}
}\n",
"msg": "MODULE FAILURE",
"rc": 0
}
我觉得它是一个有效的json对象。
如上所示,特定的ansible步骤失败,没有stderr。而且我也在接受上述警告..让我知道我哪里出错了
注意:我发送json数据作为自定义ansible模块的输出
答案 0 :(得分:0)
从module_stdout
你可以看到缺少开头{
,给你无效的JSON对象,因此模块失败。
检查您的应用程序是否没有弄乱标准输出。