如何使用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
我做错了什么?
答案 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'