如何在Vagrant上运行Fabric命令

时间:2015-05-06 18:39:50

标签: python vagrant fabric

如何使用Fabric编写Vagrant-managed VM上的命令脚本?

我认为它就像this example一样简单,但我无法让它发挥作用。

Vagrant本身工作正常。我可以跑:

vagrant init
vagrant up --provider=libvirt
vagrant ssh

并通过ssh连接就好了。但是,使用Fabric示例,如果我尝试运行:

fab vagrant uname

无法连接错误:

[127.0.0.1:2222] Executing task 'test_dev_env'
[127.0.0.1:2222] run: uname -a

Fatal error: Low level socket error connecting to host 127.0.0.1 on port 2222: Connection refused (tried 1 time)

Underlying exception:
    Connection refused

Aborting.

导致此错误的原因是什么?据我所知,vagrant ssh应该运行与Fabric相同的ssh命令。但果然,即使我手动运行ssh命令:

ssh -i /myproject/.vagrant/machines/default/libvirt/private_key -p 2222 vagrant@127.0.0.1

我也得到错误:

ssh: connect to host 127.0.0.1 port 2222: Connection refused

我做错了什么?

2 个答案:

答案 0 :(得分:2)

显然,vagrant实际上并没有设置端口转发器,因此连接到VM的唯一方法是从5 10 AttributeError: 'my_property' object has no attribute '__set__' 获取IP,然后使用它连接。所以正确的vagrant Fabric任务看起来像:

vagrant ssh-config

答案 1 :(得分:-1)

By default Vagrant似乎将tcp端口22(ssh)转发到localhost端口4567。

要收听端口2222,请将其包含在Vagrantfile

config.vm.network "forwarded_port", guest: 22, host: 2222, id: 'ssh'