2017-12-13 2 views
-1

Ich sehe, es gab eine Feature-Anfrage für diese, aber sie merken nicht, wie sie tatsächlich darum herum gearbeitet haben. Kurz gesagt, wir laden ein grooviges Archiv herunter, entpacken es und erstellen Slaves für jede Datei im Archiv, die nicht die groovige ausführbare Datei ist, und enden nicht mit .bat. Wir machen dann eine Update-Alternative für Groovy.Versuch, ein Bash-Skript in ansible zu duplizieren - nicht sicher, wie man am besten mit Slaves umgehen kann

Ich kann nicht wirklich meinen Kopf um den besten Weg, dies zu dupieren, dass nicht nur das Shell-Modul läuft. Nachdem ich mich mit dem Shell-Modul abgefunden, las ich dann, dass etwas wie

tun
- shell: GROOVY_ALT_SLAVES=" ${GROOVY_ALT_SLAVES} --slave /usr/bin/{{ item }} {{ item }} /opt/groovy-{{ groovy_version }}/bin/{{ item }}" 
    with_items: ['file1', 'file2'] 

würde nicht funktionieren, da jeder Schale Lauf eine separate Verbindung ist, so Ich bin nicht wirklich eine lange Reihe aufzubauen, um dann zu anhängen zum Befehl update-alternatives. Es gibt auch die Tatsache, dass ich manuell eine Liste von Elementen angeben muss, da ich glob nicht verwenden kann, da ich Dateien abgleichen muss, die nicht mit einem bestimmten Satz von Ausdrücken übereinstimmen.

Ich bin sicher, Ich vermisse etwas offensichtlich, aber ich habe keinen Fortschritt in diesem gemacht und jede Hilfe wäre toll.

Antwort

0

Machen Sie Ihre Zeichenfolge in einem Playbook und führen Sie die Shell nur einmal aus.

Etwas wie folgt aus:

- shell: update-alternatives --install /usr/bin/groovy groovy /opt/groovy-{{ groovy_version }}/bin/groovy 2000 {{ alt_slaves }} 
    vars: 
    alt_slaves: "{{ myfiles | map('regex_replace','(.*)','--slave /usr/bin/\1 \1 /opt/groovy-'+groovy_version+'/bin/\1') | list | join(' ') }} 

ich das nicht prüften, können Sie mit Flucht \1 spielen müssen, damit es funktioniert.

+0

Können Sie diesen Abschnitt erklären. alt_slaves: "{{myfiles | karte ('regex_replace', '(. *)', '- sklave/usr/bin/\ 1 \ 1/opt/groovy -' + groovy_version + '/ bin/\ 1') | list | join ('')}} –

+0

Wir berechnen 'alt_slaves' var wie folgt: nimm' myfiles' Liste, wende 'regex_replace' Filter auf jedes Element der Liste mit spezifizierter regexp an (welche die erforderliche Slave Zeichenkette bildet 1 'ist ein Element aus der ursprünglichen Liste), dann verbinden Sie alle Elemente zusammen mit Leerzeichen als Trennzeichen. –

Verwandte Themen