2016-06-21 5 views
1

test.ymlDatei auf dem lokalen Rechner speichern, der auf dem entfernten Rechner erzeugt wurde?

--- 
- hosts: webservers 
    remote_user: username 
    tasks: 
    - name: Execute the script 
     command: sh /home/username/top.sh 

top.sh

#!/bin/bash 
top > system.txt 

Ich betreiben test.yml in lokaler Maschine, wird es den Shell-Skript in Remote-Rechner ausführen und den Befehl speichern in system.txt Datei.

Lage von top.sh: zurückgezogen, wo system.txt: remote

Aber ich bin auf der Suche nach

Lage von top.sh: lokal (aber ich muss diesen Befehl in remote ausführen), Standort system.txt: lokal

Wie erreicht man dies?

Antwort

1

Sie können das Modul synchronize verwenden, um Dateien von lokal zu remote oder von remote zu lokalem Host zu kopieren. Zum Beispiel

- name: 'Copy run.sh to remote machine' 
    synchronize: 
    mode: push 
    src: top.sh 
    dest: /home/username 

- name: Execute the script 
    command: sh /home/username/top.sh 

- name: 'Copy system.txt to local machine' 
    synchronize: 
    mode: pull 
    src: /home/username/system.txt 
    dest: . 

Hinweis: für das synchronize Modul arbeiten müssen Sie rsync auf den Hosts installiert sein.

+0

Wow du großartig. in 'execute the script' Befehl wird nicht enden, es wird Inhalt dynamisch generieren (Endlosschleife), so dass es nicht zum nächsten Schritt kommt (im lokalen Rechner speichern). Wie überwinde ich diese Situation? –

+0

@BilalUsean Sie müssen eine Art von Timeout entweder in Ihrem top.sh-Skript hinzufügen oder mithilfe von ansible mit async und wait_for, aber das ist eine separate Frage, die Sie stellen sollten. – SztupY