Vagrant 织物漂流罐';t打开不安全的\u私钥

Vagrant 织物漂流罐';t打开不安全的\u私钥,vagrant,fabric,Vagrant,Fabric,我想为我的流浪者盒子提供美食,我遵循了这一点,但当我尝试为我的盒子提供流浪者供应命令时,我得到了下一个错误: [default] Running provisioner: fabric... [127.0.0.1] Executing task 'provide' [127.0.0.1] sudo: apt-get update Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/fa

我想为我的流浪者盒子提供美食,我遵循了这一点,但当我尝试为我的盒子提供
流浪者供应
命令时,我得到了下一个错误:

[default] Running provisioner: fabric...
[127.0.0.1] Executing task 'provide'
[127.0.0.1] sudo: apt-get update
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/fabric/main.py", line 743, in main
    *args, **kwargs
  File "/usr/local/lib/python2.7/dist-packages/fabric/tasks.py", line 368, in execute
    multiprocessing
  File "/usr/local/lib/python2.7/dist-packages/fabric/tasks.py", line 264, in _execute
    return task.run(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/fabric/tasks.py", line 171, in run
    return self.wrapped(*args, **kwargs)
  File "/home/user/projects/volaris2013/provision.py", line 10, in provide
    prepare_os()
  File "/home/user/projects/volaris2013/provision.py", line 32, in prepare_os
    sudo('apt-get update')
  File "/usr/local/lib/python2.7/dist-packages/fabric/network.py", line 578, in host_prompting_wrapper
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/fabric/operations.py", line 1095, in sudo
    stderr=stderr, timeout=timeout, shell_escape=shell_escape,
  File "/usr/local/lib/python2.7/dist-packages/fabric/operations.py", line 909, in _run_command
    channel=default_channel(), command=wrapped_command, pty=pty,
  File "/usr/local/lib/python2.7/dist-packages/fabric/state.py", line 388, in default_channel
    chan = _open_session()
  File "/usr/local/lib/python2.7/dist-packages/fabric/state.py", line 380, in _open_session
    return connections[env.host_string].get_transport().open_session()
  File "/usr/local/lib/python2.7/dist-packages/fabric/network.py", line 118, in __getitem__
    self.connect(key)
  File "/usr/local/lib/python2.7/dist-packages/fabric/network.py", line 110, in connect
    self[key] = connect(user, host, port, sock)
  File "/usr/local/lib/python2.7/dist-packages/fabric/network.py", line 392, in connect
    sock=sock
  File "/usr/local/lib/python2.7/dist-packages/paramiko/client.py", line 342, in connect
    self._auth(username, password, pkey, key_filenames, allow_agent, look_for_keys)
  File "/usr/local/lib/python2.7/dist-packages/paramiko/client.py", line 462, in _auth
    key = pkey_class.from_private_key_file(key_filename, password)
  File "/usr/local/lib/python2.7/dist-packages/paramiko/pkey.py", line 198, in from_private_key_file
    key = cls(filename=filename, password=password)
  File "/usr/local/lib/python2.7/dist-packages/paramiko/rsakey.py", line 51, in __init__
    self._from_private_key_file(filename, password)
  File "/usr/local/lib/python2.7/dist-packages/paramiko/rsakey.py", line 163, in _from_private_key_file
    data = self._read_private_key_file('RSA', filename, password)
  File "/usr/local/lib/python2.7/dist-packages/paramiko/pkey.py", line 279, in _read_private_key_file
    f = open(filename, 'r')
IOError: [Errno 2] No such file or directory: '[/home/user/.vagrant.d/insecure_private_key]'
我认为错误在文件名周围的括号中,但我不知道如何解决这个问题,我在过去有过类似的错误,但在fabric任务中,我在env任务中解决了这个问题

软件包的版本:

  • 流浪汉1.4.2
  • 织物==1.8.0
  • 烹饪==0.6.5
  • paramiko==1.12.0
  • VirtualBox 4.3.9
Vagrant(从1.4.0开始)更改为将要使用的私钥从字符串返回到数组。
vagrant fabric
插件天真地假设它得到一个字符串,并直接在它的命令中使用
{private\u key}
,该命令用包装方括号写出

下面是对lib/vagrant fabric/provisioner.rb的修复:

private\u key=ssh\u info[:private\u key\u path]
#之后https://github.com/mitchellh/vagrant/pull/907 (流浪汉1.4.0+),
#私钥路径是一个数组。
如果私钥。种类?(数组)
私钥=[私钥]
终止
private_key_option=private_key.map{| k |'-i'+k}.join('')
如果config.remote==false
系统“#{config.fabric_path}-f#{config.fabfile_path}”+
“#{private_key_option}--user=#{user}--hosts=#{host}”+
--port=#{port}{config.tasks.join(“”)}
其他的
更新:添加了pull请求:

Vagrant(从1.4.0开始)更改为将要使用的私钥从字符串返回到数组。
vagrant fabric
插件天真地假设它得到一个字符串,并直接在它的命令中使用
{private\u key}
,该命令用包装方括号写出

下面是对lib/vagrant fabric/provisioner.rb的修复:

private\u key=ssh\u info[:private\u key\u path]
#之后https://github.com/mitchellh/vagrant/pull/907 (流浪汉1.4.0+),
#私钥路径是一个数组。
如果私钥。种类?(数组)
私钥=[私钥]
终止
private_key_option=private_key.map{| k |'-i'+k}.join('')
如果config.remote==false
系统“#{config.fabric_path}-f#{config.fabfile_path}”+
“#{private_key_option}--user=#{user}--hosts=#{host}”+
--port=#{port}{config.tasks.join(“”)}
其他的
更新:添加拉取请求: