2016-04-28 22 views
1

Ok ..ここに行きます。これは私のmain.ymlの内容です。実行可能なコマンドタスクでshスクリプトを実行する方法

「temp」というディレクトリの下に「myscript.sh」という名前のシェルスクリプトがあります。私のディレクトリ階層は次のとおりです。

  • ansibleコピー - 役割(ディレクトリ)
    • main.yml
    • 一時(ディレクトリ)
      • myscript.sh(私はこのシェルスクリプトを実行したいです)

シェルスクリプトをホストサーバーにコピーしてから実行したくありません。 main.ymlファイルと一緒に利用できるシェルスクリプトを実行したい。

私はこの脚本を実行すると、私はのようなエラーが出ます:標準エラー出力します。sh:TEMP/myscript.sh:そのようなファイルやディレクトリはありません

これを助けてください。あなたはこれを覚えておく場合

答えて

3

あなたははるかに簡単Ansibleを見つける:

Ansibleモジュールがターゲットホスト上で実行します。

あなたが行う場合は、この:

- name: run some command 
    command: foo 

次に、そのタスクはホスト上でコマンドfooを実行しようとしますAnsibleはないあなたがAnsibleを実行しているホスト上で、接続されています。

タスクをローカルで実行する場合は、タスクを明示する必要があります。たとえば:

- hosts: web-servers 
    tasks: 
    - name: Run the below script 
     delegate_to: localhost 
     command: sh temp/myscript.sh 

これはlocalhost ではなく、このタスク が通常対象となる方web-serversホスト上でこのタスクの実行を持っているdelegate_toディレクティブを使用しています。

詳細については、the Ansible documentation on delegationを参照してください。

1

@larsksの上級回答に加えて、local_actionは、delegate_to: localhostの略語です。したがって、これは次のようになる可能性があります。

- hosts: web-servers 
    tasks: 
    - name: Run the below script 
     local_action: command sh temp/myscript.sh 

same linkを参考にしてください。

関連する問題