2016-06-21 5 views
1

私はローカルマシンにtest.ymlを実行test.ymlリモートマシンで生成されたローカルマシンにファイルを保存しますか?

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

top.sh

#!/bin/bash 
top > system.txt 

、それがリモートマシンでシェルスクリプトを実行して、コマンドを保存しますsystem.txtファイル。

top.shの場所:リモート、system.txtの所在地:リモート

しかし、私はtop.sh

場所を探しています:ローカル(私リモートでこのコマンドを実行する必要があります)、場所system.txt:ローカル

これを行うには?

答えて

1

synchronizeモジュールを使用して、ローカルからリモート、またはリモートからローカルのホストにファイルをコピーできます。例えば

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

注:synchronizeモジュールが動作するために、あなたはrsyncがホストにインストールされている必要があります。

+0

うわー、あなたは素晴らしいです。 'スクリプトの実行'コマンドでは、コンテンツが動的に生成されます(無限ループ)ので、次のステップ(ローカルマシンに格納)にはなりません。この状況をどのように克服するか? –

+0

@BilalUseanあなたはtop.shスクリプトで何らかのタイムアウトを追加する必要があります。あるいは、asyncとwait_forと一緒に使うこともできますが、これは別の質問です。 – SztupY

関連する問題