如何在Ansible中工作时改变?

时间:2017-02-07 14:28:37

标签: ansible

我正在尝试使用Jenkins服务器上的命令模块运行脚本。编写脚本时,如果不进行任何配置更改,则应返回0,并且不应更改Ansible任务。

以下是代码:

  - name: Script to run
    command: java -jar /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar -s http://localhost:8080 groovy "{{ jenkins_home }}/userContent/script.groovy"
    register: return_code
    changed_when: return_code.stdout != 0

但是上面的代码行为总是显示为已更改。

Ansible输出:

  

任务[jenkins:要运行的脚本] ********************************

     

已更改:[test] => {“已更改”:true,“cmd”:[“java”,“ - jar”,“/ var / cache / jenkins / war / WEB-INF / jenkins-cli.jar”,“ - s”,“{{ 3}}“,”groovy“,”/ var / lib / jenkins / userContent / script.groovy“],”delta“:”0:00:01.547098“,”end“:”2017-02-06 15:31 :05.989134“,”rc“:0,”start“:”2017-02-06 15:31:04.442036“,”stderr“:”[WARN]无法使用SSH密钥进行身份验证。以匿名方式进行“,”stdout “:”0“,”stdout_lines“:[”0“],”警告“:[]}

1 个答案:

答案 0 :(得分:2)

您需要将stdout值与字符串而不是整数进行比较:

- name: Script to run
  command: java -jar /var/cache/jenkins/war/WEB-INF/jenkins-cli.jar -s http://localhost:8080 groovy "{{ jenkins_home }}/userContent/script.groovy"
  register: script_call
  changed_when: script_call.stdout != "0"