を実行するときにパラメータを渡すことができません/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
モジュールを使用して実行することもできます。
"*/S"や "\\/S"や "\\/S"などの "引用符*のいろいろなやり方"はありましたか?もちろん '--'がなければ。そして、タイトルが間違っています。実際には、パラメータを渡すことに成功しますが、 '--'はそれを防ぐべきです。 – techraf
@techraf:あなたは私の問題をほぼ解決しました。 '--'を削除すると、インストールルーチンが正しく起動します。私はインストーラーを誤解し、組み込みスクリプトに引数を渡すために '--'が必要であると考えました。 1つの問題は、インストーラがウィンドウを開き、「戻る」を押して終了するように依頼するための問題です。しかし、それはインストーラの問題であり、Ansibleの問題ではありません。 – magnetometer