首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ansible playbook正在失败

ansible playbook正在失败
EN

Stack Overflow用户
提问于 2017-09-09 21:34:40
回答 1查看 215关注 0票数 0

攻略的一部分如下:这是可分析的攻略(main.yml)

代码语言:javascript
复制
         - 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应用程序。

代码语言:javascript
复制
 ###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类,它做一些与应用程序相关的事情。

代码语言:javascript
复制
def call(body):
   application = {}
   application["is_activated"]=True
   return application

在main.yaml和自定义ansible模块和应用程序类之上

代码语言:javascript
复制
        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如下:

模块标准输出I截断确切的module_stdout如下所示:

代码语言:javascript
复制
{
    "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模块的输出发送

EN

回答 1

Stack Overflow用户

发布于 2017-09-10 17:07:00

module_stdout中,您可以看到缺少开头的{,这给您提供了无效的JSON对象,因此模块失败。

检查您的应用程序不会干扰标准输出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46131266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档