2017-05-11 6 views
2

現在、私は迷惑メールボックスをプロビジョニングしており、Pythonスクリプトを実行しています。バグボックスはPythonを実行して待ちます

config.vm.provision :shell, :inline => "python first.py", :privileged => false 

さて、これは動作し、それが発火するが、Pythonスクリプト自体に、私は、Pythonスクリプトを通じて raw_inputを求めています。しかし、流入物を供給するときは、入力は単にスキップされます。

==> default: Checking if box 'box' is up to date... 
==> default: Running provisioner: shell... 
    default: Running: inline script 
==> default: Do you want to download the database? [Y/n] Please respond with 'yes' or 'no' (or 'y' or 'n'). 
==> default: Do you want to download the database? [Y/n] 
==> default: Traceback (most recent call last): 
==> default: File "first.py", line 110, in <module> 

なぜこれが起こっているのか、どのように防止し、応答を待つことができるのか誰にも分かりません。

答えて

0

このケースを回避するために

一つの方法は、依頼するだろうあなたは、このコマンドを実行することはできません(またはあなたがそれらを実行することができますが、それらは期待される出力を持って文句を言わない)ので、何の標準入力がありませんので、ベイグラントは、SSH接続を介してスクリプトを実行しますVagrantfileそのものの間に質問を作成し、その答えをスクリプトに渡します。

Vagrant.configure("2") do |config| 
    .... 
    print "Do you want to download the database? [Y/n] Please respond with 'yes' or 'no' (or 'y' or 'n')." 
    answer = STDIN.gets.chomp 

    config.vm.provision :shell, :path => "setup.sh", :args => [ answer ] 
    .... 
end 

主な欠点は、不快なコマンドを実行するたびに質問が表示され、少し痛いことがあるということです。

関連する問題