0

App Engine アプリケーションから Google Compute Engine VM を起動しています。GCE VM の起動スクリプトは python スクリプトを実行し、次に os.system が bdutil コマンドを呼び出します

os.system("bdutil --bucket <BUCKET> --num_workers 1 "
          "--env_var_files hadoop2_env.sh --default_fs hdfs "
          "--zone us-central1-b --prefix <NAME> --force deploy")

これらのスクリプトをルートとして実行する必要があることがわかりました。

sudo python script.py

--force deployコマンド オプションは期待どおりに機能します。つまりシェル ターミナルに次のように表示されます。

Deploy cluster with following settings?
....
(y/n) y

ただし、別のプロンプトが含​​まれています。

Are you sure you want to run the command as root? (y/n)

これらのスクリプトをルートとして実行する必要があることがわかりましたが、リモートでも実行しているため、ターミナル プロンプトに応答できません。

最後のプロンプトに応答せずに、この bdutil コマンドを強制的に実行するにはどうすればよいですか? bdutil ソース コードの変更は実行可能なオプションではありません。

4

1 に答える 1

0

ご報告ありがとうございます。これは のバグです。通常の状況では、標準のデプロイ/削除プロンプトだけでなく、すべての確認プロンプトにまたはフラグをbdutil実際に適用する必要があります。この問題を追跡するためにhttps://github.com/GoogleCloudPlatform/bdutil/issues/31を提出しました。-f--force

それまでの間、linux コマンドを使用してこれを回避できるはずです。これは、通常、そのようなフラグを直接含まないコマンドyesのアドホック フラグとして使用されます。--force

os.system("yes | bdutil --bucket <BUCKET> --num_workers 1 "
          "--env_var_files hadoop2_env.sh --default_fs hdfs "
          "--zone us-central1-b --prefix <NAME> --force deploy")
于 2015-05-20T02:09:47.080 に答える