【问题标题】:The async task did not return valid JSON异步任务未返回有效的 JSON
【发布时间】:2016-06-05 00:16:28
【问题描述】:
ANSIBLE 版本
ansible --version
ansible 2.0.2.0
  config file =
  configured module search path = Default w/o overrides
操作系统/环境
MacOS 10.9
概括

我想启动shell命令来异步构建docker镜像,构建成功但是出现了这个错误:

    fatal: [192.168.0.1]: FAILED! => {"changed": false, "failed": true, "msg": "The async task did not return valid JSON: No JSON object could be decoded"}
重现步骤
<!---
For bugs, show exactly how to reproduce the problem.
For new features, show how the feature would be used.
-->

我手动执行了 python sn-p ansible 执行:

/root/.ansible/tmp/ansible-tmp-1465081459.8-258691745536723/command
/root/.ansible/tmp/ansible-tmp-1465081459.8-258691745536723/arguments

结果是

{ “改变”:是的, “结束”:“2016-06-05 07:12:38.323820”, "stdout": "将构建上下文发送到 Docker 守护进程 12.8 kB\r\r 第1步:来自centos:6.6 ---> 87dd25f5ba5c 第 2 步:运行 yum groupinstall -y development ---> 使用缓存 ---> dc1b778350d5 第 3 步:运行 yum install -y vim bzip2-devel 主机名 tar zlib-dev ---> 使用缓存 ---> d4538794340e 第 4 步:运行 curl https://bootstrap.pypa.io/get-pip.py | Python - ---> 使用缓存 ---> cd3cd13b11db 第 5 步:运行 pip install envtpl ---> 使用缓存 ---> 574514eb6d91 第 6 步:工作目录 /tmp ---> 使用缓存 ---> 3750674900e6 第 7 步:ENV SCALA_VERSION 2.11 ---> 使用缓存 ---> 8316460b0264 第 8 步:ENV KAFKA_VERSION 0.9.0.1 ---> 使用缓存 ---> aa8f9cf12288 第 9 步:ENV KAFKA_HOME /usr/share/kafka_\"$SCALA_VERSION\"-\"$KAFKA_VERSION\" ---> 使用缓存 ---> 38c1243614ac 第十步:运行 yum install -y tar libcurl libcurl-devel rrdtool rrdtool-devel perl-devel libgcrypt-devel gcc make gcc-c++ yajl-devel libxml2-devel libxml-2.0 java-1.7.0-openjdk java-1.7.0- openjdk-devel ---> 使用缓存 ---> 8350d7ba311a 第十一步:运行 curl -L -O http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/\"$KAFKA_VERSION\"/kafka_\"$SCALA_VERSION\"-\"$KAFKA_VERSION\".tgz && tar xfz kafka_\"$SCALA_VERSION\"-\"$KAFKA_VERSION\".tgz -C /usr/share/ ---> 使用缓存 ---> 485916280855 第 12 步:运行 mkdir -p /usr/local/bin/ ---> 使用缓存 ---> 2a3427511ef0 第 13 步:添加 start-kafka.sh /usr/local/bin/start-kafka.sh ---> 使用缓存 ---> 6cd1ae0c2abc 第 14 步:运行 chmod +x /usr/local/bin/start-kafka.sh ---> 使用缓存 ---> 4ba3e949839e 第 15 步:添加 zookeeper.properties.j2 \"$KAFKA_HOME\"/config/ ---> 使用缓存 ---> db8bfa4cce0d 第 16 步:添加 server.properties.j2 \"$KAFKA_HOME\"/config/ ---> 使用缓存 ---> b2d93fd06892 第 17 步:暴露 2181 9092 ---> 使用缓存 ---> 25f1e2136c2c 第 18 步:运行 mv /etc/localtime /etc/localtime.bak ---> 使用缓存 ---> 1cf4fc533f3a 步骤 19:运行 ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ---> 使用缓存 ---> b6bae747bc32 第 20 步:CMD /usr/local/bin/start-kafka.sh ---> 使用缓存 ---> 9920101ececa 成功打造“9920101ececa”, "cmd": "docker build -t elk/kafka /tmp/dockerfile/kafka", “rc”:0, “开始”:“2016-06-05 07:12:38.253244”, “标准错误”:“”, “三角洲”:“0:00:00.070576”, “调用”:{ “module_args”:{“警告”:真, “可执行”:空, “chdir”:空, "_raw_params": "docker build -t elk/kafka /tmp/dockerfile/kafka", “删除”:空, “创建”:空, “_uses_shell”:真 } }, “警告”:[] }

我执行的任务是

- name: build or check kafka docker image
  shell: docker build -t {{ image_name }} /tmp/dockerfile/kafka
  async: 2400                                     # wait seconds
  poll: 5                                        # poll wait seconds

【问题讨论】:

    标签: ansible ansible-playbook ansible-2.x


    【解决方案1】:

    我终于努力解决这个问题。我在文件executor/task_executor.py下的第445行添加了打印结果的代码:

    return dict(failed=True, msg=u"The async task did not return valid JSON: error:%s result:%s" % (to_unicode(e), result))
    

    然后我发现了一些无效的json文本:/etc/profile.d/lang.sh: line 19: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory\\r\\n 在我借助 link 解决了这个语言环境问题后,这个问题就消失了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-16
      • 1970-01-01
      • 2012-08-22
      • 2015-01-12
      • 2014-10-01
      • 2016-08-27
      • 1970-01-01
      相关资源
      最近更新 更多