首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >攻略的问题

攻略的问题
EN

Stack Overflow用户
提问于 2021-11-24 14:00:53
回答 1查看 37关注 0票数 0

我是ansible的新手。我已经配置了Jenkins-Ansible来运行一些作业。我的main.yml文件包含:

代码语言:javascript
复制
    - name: Check for <user1>
      become: false
      become_user: <user1>
      shell: "/path/on/destination/server/<applicationhealthcheck.sh>
      register: output
      ignore_errors: yes
      when: <variable1> == "<user1>" or <variable1> == "<user2>"
      tags:
        - check
        - start

    - name: Show output
      debug: 
        msg: "{{ output.stdout_lines }}"
      ignore_errors: yes
      tags:
        - always

在Jenkins中构建时,我得到的错误是:

fatal: destination_server_name: FAILED!=> {"msg":“该任务包含一个变量未定义的选项。错误是:'dict‘对象没有属性’‘stdout_ line’\n\n错误似乎在'/ansible/playbook/path/main.yml':行,列中,但可能在\n文件的其他位置,具体取决于确切的语法问题。\n\n有问题的行似乎是:\n\n\n-名称:显示输出\n此处\n\异常类型:\nexception“'dict‘对象没有属性’stdout_lines‘”“}

对于如何摆脱这个错误有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2021-11-24 16:39:41

您的第一个任务与第二个任务具有不同的条件和标记,因此它并不总是运行。当它不运行时,output.stdout_lines就不存在。有很多方法可以解决这个问题。

您可以确保条件和标记匹配。

您可以在第二个任务上设置条件:

代码语言:javascript
复制
    - name: Show output
      debug: 
        msg: "{{ output.stdout_lines }}"
      tags:
        - always
      when: output.stdout_lines is defined

您可以提供默认值:

代码语言:javascript
复制
    - name: Show output
      debug: 
        msg: "{{ output.stdout_lines | default('no output') }}"
      tags:
        - always

等。

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

https://stackoverflow.com/questions/70097449

复制
相关文章

相似问题

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