2014-11-19 21 views
5

Tôi đang làm việc trên một dự án để triển khai máy chủ CI jenkins trên centos7 bằng cách sử dụng ansible Và tôi đang gặp sự cố khi tạo công việc jenkins từ mẫu xml bằng ansible.tạo công việc jenkins với ansible

Mọi thứ hoạt động tốt cho đến giờ, nhưng bây giờ tôi muốn có thể tạo công việc và cung cấp cho họ một số cấu hình cơ bản từ tệp xml sử dụng ansible. Giải pháp của tôi là lệnh sau từ Jenkins-cli:

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

này hoạt động hoàn hảo khi nhập bằng tay trong hộp centos7, nhưng khi tôi đặt nó vào ansible và chạy nó:

- 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 

nó mang lại cho các thông báo lỗi sau:

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

Có ai biết giải pháp này không? Theo như tôi có thể thấy tôi đang làm đúng cách (vì lệnh hoạt động khi không được nhập bởi ansible)

Trả lời

3

command module không hỗ trợ chuyển hướng đầu vào và đầu ra vì nó không truyền chuỗi lệnh vào vỏ . Đây là những gì tài liệu của nó nói:

Nó sẽ không được xử lý thông qua vỏ, vì vậy biến như $ HOME và các hoạt động như "<", ">", "|", và "&" sẽ không làm việc (sử dụng shell module nếu bạn cần các tính năng này).

Vì vậy:

- 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 
7

tôi quản lý Jenkins CI đường ống của tôi/CD và thiết lập với ansible, và tôi chủ yếu dựa vào thư viện có sẵn (groovy DSL, trăn Jenkins-job-builder) và template can đảm của cấu hình jenkins XML bằng jinja2. Tôi được yêu cầu giới thiệu những gì có thể được thực hiện với ansible tại một buổi họp mặt địa phương, và đã làm việc một số mã mà tôi sẽ được cung cấp và chia sẻ tại cuộc họp đó trong năm mới. Tôi nghiêm túc nghĩ rằng công cụ này có thể giúp bạn rất nhiều, tôi hiện đang sử dụng thiết lập này trong dự án hiện tại của tôi và không thể tưởng tượng quản lý jenkins bất kỳ cách nào khác.

https://github.com/Azulinho/ansible-jenkins-showcase

+0

mặc dù câu hỏi của tôi đã được trả lời, tôi đánh giá rất cao câu trả lời của bạn và tôi chắc chắn điều này thực sự sẽ rất hữu ích đối với tôi. – Muffin

0

Bạn có thể sử dụng chuyển hướng vỏ bằng cách thực thi trình bao. Ví dụ, lệnh 'sh' echo test> hello.txt "'sẽ hoạt động như dự định. Chỉ cần bọc toàn bộ lệnh với một cái gì đó như '/ bin/sh' java ...> ... "'.

Các vấn đề liên quan