2017-01-06 5 views
1

を実行するときにパラメータを渡すことができません/Sはサイレントインストールを実行するスイッチで、パラメータ/Dはインストール先を設定します。コンソールでこのコマンドを実行すると成功します。Ansibleは、私が脚本で、次のタスクを使用して(Makeself 2.1.5を使用して作成).RUNファイルをインストールするAnsibleを使用しようとしています.RUNファイル

Ansibleはエラーなしでタスクを実行するために主張:

changed: [127.0.0.1] => { 
    "changed": true, 
    "cmd": [ 
     "/home/user/folder/program.run", 
     "--", 
     "/S", 
     "/D=/home/user/folder/destination/" 
    ], 
    "delta": "0:00:00.065261", 
    "end": "2017-01-06 09:08:43.114265", 
    "invocation": { 
     "module_args": { 
      "_raw_params": "/home/user/folder/program.run -- /S /D=/home/user/folder/destination/", 
      "_uses_shell": false, 
      "chdir": null, 
      "creates": null, 
      "executable": null, 
      "removes": null, 
      "warn": true 
     }, 
     "module_name": "command" 
    }, 
    "rc": 0, 
    "start": "2017-01-06 09:08:43.049004", 
    "stderr": "", 
    "stdout": "", 
    "stdout_lines": [], 
    "warnings" : [] 

だから何とか追加のパラメータは、実行がAnsibleを気付かずに失敗します。私はshellコマンドと私のコマンドを引用する様々な方法を使用しようとしましたが、役に立たない。

.runファイルにパラメータを渡していない場合、つまりcommand: /home/user/folder/program.runを使用すると、ユーザーの入力を求めるインストールプロンプトが開き、Anipalの目的を無効にします。

誰にでも解決策がありますか?可能な回避策は、expectモジュールを使用することですが、インストールする唯一のファイルではないので、コマンドライン引数を使用できるようにすることをお勧めします。

私はUbuntu 16.04.1 LTSでAnsible 2.2.0.0を使用しています。

EDIT:techrafのアドバイスに従い 、私はshellモジュールを使用して簡単な解決策を見つけました。 shell: konsole -e /home/user/folder/program.run /S /D=/home/user/folder/destination/を使用すると、インストールが正しく完了しました。コマンドをスクリプトファイルに入れて、scriptモジュールを使用して実行することもできます。

+0

"*/S"や "\\/S"や "\\/S"などの "引用符*のいろいろなやり方"はありましたか?もちろん '--'がなければ。そして、タイトルが間違っています。実際には、パラメータを渡すことに成功しますが、 '--'はそれを防ぐべきです。 – techraf

+0

@techraf:あなたは私の問題をほぼ解決しました。 '--'を削除すると、インストールルーチンが正しく起動します。私はインストーラーを誤解し、組み込みスクリプトに引数を渡すために '--'が必要であると考えました。 1つの問題は、インストーラがウィンドウを開き、「戻る」を押して終了するように依頼するための問題です。しかし、それはインストーラの問題であり、Ansibleの問題ではありません。 – magnetometer

答えて

1

commandの代わりにshellモジュールを使用してみてください:あなたが実際に続く引数を解析したシェル形を防ぎ、コマンドの実行、中--を使用している

- name: Install Program 
    shell: /home/user/folder/program.run -- /S /D=/home/user/folder/destination/ 

。これはコマンドのパラメータではなく、組み込みのシェルです。

実際にテストすることはできません(実際に実行することができないプログラムを表示することは不可能です)が、動作するはずです。


以上が動作しない場合、あなたはおそらく、スクリプトにこの行を入れて、scriptモジュールとそれを実行する必要があると思います。

+0

'shell'モジュールを使用しても問題は解決しません。これは '' _uses_shell ':true'を除いて同じ出力を生成しますが、プログラムをインストールしません。 – magnetometer

+0

もしうまくいかなければ、スクリプトを書いて 'script'でそれを実行しなければならないでしょう。 – techraf

+0

'--'を削除すると、インストーラは正しく起動しますが、ウィンドウを開き、インストールの最後に" return return "を尋ねます。私はスクリプトを書いて、それが問題を解決するかどうかを調べるつもりです。 – magnetometer

関連する問題