2014-11-19 9 views
5

Ich arbeite an einem Projekt, um einen jenkins CI-Server auf CentOS7 mit anssible zu implementieren, und ich habe Probleme beim Erstellen jenkins Jobs von einem XML-Vorlage mit Ansible.Erstellen von jenkins Jobs mit ansible

Alles funktioniert soweit, aber jetzt möchte ich in der Lage sein, Jobs zu erstellen, und ihnen einige Grundkonfiguration aus einer XML-Datei mit Ansible geben. Meine Lösung war, der folgende Befehl aus jenkins-cli:

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

diese einwandfrei funktioniert, wenn sie manuell in dem centos7 Feld eingegeben, aber wenn ich es in ansible setzen und es läuft:

- 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 

es gibt die folgende Fehlermeldung:

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

Kennt jemand eine Lösung? Soweit ich sehe, mache ich es richtig (da der Befehl funktioniert, wenn nicht durch Ansible eingegeben)

Antwort

3

Die command module unterstützt keine Eingabe- und Ausgabeumleitung, da es die Befehlszeichenfolge nicht an eine Shell übergeben . Dies ist, was seine Dokumentation sagt:

Es wird nicht durch die Schale, so Variablen wie $ HOME und Operationen wie „<“, „>“, verarbeitet werden „|“ und „&“ wird nicht funktionieren (Verwenden Sie die shell module, wenn Sie diese Funktionen benötigen).

So:

- 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

Ich verwalte meine jenkins CI/CD-Pipelines und Setup mit ansible, und ich verlassen sich stark auf den verfügbaren Bibliotheken (groovy DSL, Python jenkins-job-Builder) und Schablone, um die Eingeweide der jenkins XML-Konfiguration mit jinja2. Ich wurde gebeten, zu demonstrieren, was mit Ansible bei einem lokalen Treffen gemacht werden kann, und habe Code bearbeitet, den ich im neuen Jahr bei diesem Treffen vorstellen und teilen werde. Ich glaube ernsthaft, dass dieses Zeug Ihnen sehr helfen könnte, ich verwende dieses Setup derzeit in meinem aktuellen Projekt und kann mir nicht vorstellen, jenkins anders zu verwalten.

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

+0

obwohl meine Frage bereits beantwortet wurde, freue ich mich sehr über Ihre Antwort, und ich bin mir sicher, dass dies in der Tat sehr hilfreich für mich sein wird. – Muffin

0

Sie können durch Ausführen der Shell Shell-Umleitung verwenden. Zum Beispiel funktioniert der Befehl "sh" echo test> hello.txt "'wie beabsichtigt. Wickeln Sie einfach den ganzen Befehl mit etwas wie '/ bin/sh' Java ...> ... ''.

Verwandte Themen