【问题标题】:Vagrant shell provisioning is not workingVagrant shell 配置不起作用
【发布时间】:2013-04-28 17:37:29
【问题描述】:

我一直在尝试使用 vagrant 在 Windows 上设置一个 Ubuntu 虚拟机用于 Rails 开发。

我所做的是首先创建一个“普通”虚拟机并通过 SSH 连接到其中,然后运行我需要的所有命令,例如 sudo apt-get install x 以确保它们正常工作(他们确实这样做了),然后再放入它们成一个shell脚本。

当我尝试使用我制作的 shell 脚本运行 vagrant up 时,它会出现一条非常长的错误消息,其中包含诸如 stdin: is not a tty 和其他同样神秘的错误消息。

我的 vagrant 文件如下所示:

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

  config.vm.box = "precise32"
  config.vm.provision :shell, :path => "Vagrant.sh" 
  config.vm.network :forwarded_port, host: 3003, guest: 3000,  auto_correct: true

end

我的 shell 脚本在这里(因为它有点长而且 GitHub 提供语法高亮): https://gist.github.com/leebrooks0/5477591

控制台输出在这里: https://gist.github.com/leebrooks0/5477627

任何帮助将不胜感激。


经过更多尝试,我意识到即使是 vagrant docs (http://docs.vagrantup.com/v2/getting-started/provisioning.html) 中的演示脚本也无法正常工作,这很奇怪,因为当我昨天开始这项工作并进行尝试时,该脚本确实有效。

【问题讨论】:

    标签: vagrant


    【解决方案1】:
    /tmp/vagrant-shell: line 5: $'\r': command not found
    

    第 5 行

    echo 'Updating system packages...'
    

    Windows“回车/换行”\r\n 与 unix“新行”\n 似乎可能存在问题

    考虑在 vagrant 文件中使用 chef-solo 选项,需要一点时间来适应厨师,但可能值得 - http://docs.vagrantup.com/v2/provisioning/chef_solo.html

    【讨论】:

    • 我也注意到了,但我忽略了它(也许是愚蠢的),因为文档中的示例 shell 脚本昨天确实有效。我一直在研究 puppet 和 chef,但我一次想了一个新把戏 :) 顺便说一下,为什么你推荐 chef而不是 puppet?
    • 我使用这个技巧将我的行尾转换为 unix 行尾。superuser.com/questions/479756/eol-in-notepad-and-notepad.
    • 我认为学习任何一个都不会出错,厨师似乎对我来说更容易上手,chef-solo 和刀可以轻松完成,无需配置服务器 - 那里有一些不错的博客文章做比较:google.com/search?q=chef+or+puppet
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 2014-08-09
    • 2023-03-16
    相关资源
    最近更新 更多