【问题标题】:no output until script completely finishes when doing vagrant up provider=rackspace在执行 vagrant up provider=rackspace 时脚本完全完成之前没有输出
【发布时间】:2015-03-02 14:47:16
【问题描述】:

我正在使用 vagrant 在机架空间/开放堆栈集群中启动一些服务器。我正在使用 vagrant rackspace 插件(https://github.com/mitchellh/vagrant-rackspace)。

我的配置脚本执行并运行良好——但有一个不便之处:直到最后,我才看到脚本的任何输出。不知何故,所有脚本输出似乎都被缓冲了,我确实看到了......但直到脚本完全终止。

我有一个解决方法,如果我使用 rackspace 控制台登录,我可以将运行的所有脚本的输出 'tee' 到一个文件中,我可以查看该文件(在配置期间)。但如果输出在生成时立即滚动,而不是在最后缓冲和转储。

[注意-我还向开发人员提交了一个错误,如果我在那里得到答案,我会更新这个线程。注意2:我用 :keep_color => true 尝试了这个,没有那个参数。同样的结果:直到最后没有输出)。

要复制,请使用您的机架空间凭据,而不是下面的虚拟凭据。然后运行 vagrant up provider=rackspace。您将看到所有输出立即出现(而不是看到消息“sleeping 40 secs”,然后是延迟,然后是另一条消息。)

    Vagrant.configure("2") do |config|

             config.vm.box = "dummy"
             config.ssh.pty = true          # work around issue where sudo requires tty


            config.vm.provision :shell,
              :keep_color => true,
              :inline=> ' ( echo sleeping 40 secs ; sleep 40 ; echo sleep again for 40 secs ; sleep 40 ) | tee /tmp/out'


             config.ssh.private_key_path = "./id_rsa"

             config.vm.provider :rackspace do |rs|
                rs.username        = "bozo"
                rs.api_key         = "the-clown"
                rs.flavor          = /1 GB Performance/
                rs.image           = "bfa5783c-e40e-4668-adc1-feb0ae3d7a46"

                rs.public_key_path = "./id_rsa.pub"
                rs.rackspace_region = :dfw
             end

    end

【问题讨论】:

  • 我对内联脚本执行有同样的看法。
  • 我也有同样的问题。我最终要做的是按 Enter 更新输出,这似乎会立即加载到缓冲的控制台文本中。我也很想知道如何解决这个问题。谢谢,

标签: vagrant openstack rackspace


【解决方案1】:

我没有 Rackspace 帐户,但可能与以下问题相同:

How can I use "puts" to the console without a line break in ruby on rails?

尝试将其添加到您的 Vagrantfile:

$stdout.sync = true
$stderr.sync = true

【讨论】:

  • 谢谢。我现在在做另一个项目,所以我可能需要一段时间才能尝试。不过感谢您的建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-10
  • 2013-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多