一尘不染

用ansible创建詹金斯工作

jenkins

我正在使用ansible在centos7上部署jenkins CI服务器的项目,并且在使用ansible从xml模板创建jenkins作业时遇到了问题。

到目前为止,一切工作正常,但现在我希望能够创建作业,并使用ansible从xml文件为它们提供一些基本配置。我的解决方案是jenkins-cli的以下命令:

sudo java -jar jenkins-cli.jar -s http://localhost:8080 create-job Job_test1 < Job_test1.xml

在centos7框中手动输入时,此方法非常有效,但是当我将其放入ansible并运行它时:

- name: create jenkins jobs with xml files
  sudo: yes
  command: "java -jar {{ jenkins.cli_dest }} -s http://localhost:8080 create-job {{ item.name }} < {{ jenkins_dest }}/{{ item.xml_name }}"
  with_items: jenkins_jobs

它给出以下错误信息:

stderr: Too many arguments: <
java -jar jenkins-cli.jar create-job NAME
Creates a new job by reading stdin as a configuration XML file.

有人知道解决方案吗?据我所知,我做得很好(因为当ansible输入该命令时该命令有效)


阅读 211

收藏
2020-07-25

共1个答案

一尘不染

命令模块不支持输入和输出重定向,因为它不命令字符串传递给一个壳。这就是它的文档说的:

它不会通过外壳进行处理,因此$ HOME之类的变量以及“ <”,““>”,“
|”和“&”之类的操作将不起作用(如果需要这些功能,请使用shell模块)。

所以:

- name: create jenkins jobs with xml files
  sudo: yes
  shell: "java -jar {{ jenkins.cli_dest }} -s http://localhost:8080 create-job {{ item.name }} < {{ jenkins_dest }}/{{ item.xml_name }}"
  with_items: jenkins_jobs
2020-07-25