如何使用批处理文件来执行 运行 Vagrant 命令,但在完成后让我连接到 Vagrant?
How can I use a batch file to run Vagrant commands, but leave me connected to Vagrant once finished?
这是我目前在批处理文件中的内容:
set root="C:\Users\esohlberg\lwebsite"
cd %root%
vagrant up
vagrant ssh -- -t "source lw/bin/activate && cd /vagrant/; ./manage.py runserver 0.0.0.0:8000"
cmd /k
Vagrant 启动后,我激活一个 virtualenv,cd 到正确的位置,然后 运行 一个服务器。执行此命令将我带到服务器 运行ning,在那里我可以看到
System check identified no issues (0 silenced).
August 24, 2018 - 12:33:12
Django version 2.0.3, using settings 'lwebsite.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
然而,当我使用 CONTROL-C 退出时,我看到了
Connection to 127.0.0.1 closed.
而且我已经不在 Vagrant 了。是否有可能以这样的方式设置命令,一旦服务器退出,我就留在 /vagrant/ 目录中,连接仍然存在并且 Vagrant 的 virtualenv 仍然处于活动状态?这将使我能够更轻松地再次管理站点或 运行 服务器。
我已经看过 https://www.vagrantup.com/docs/provisioning/shell.html,但这些示例似乎显示了仅在配置期间执行的命令,我不想每次执行此文件时都这样做。
I've already looked at https://www.vagrantup.com/docs/provisioning/shell.html, but the examples seem to show commands executed only during provisioning, which I don't want to do every single time I execute this file.
您找对地方了,您想要的是 运行 VM 启动时的命令,以便您可以执行以下操作:
config.vm.provision "shell", :inline => "source lw/bin/activate && cd /vagrant/; ./manage.py runserver 0.0.0.0:8000", :run => 'always', :privileged => false
这将确保每次您从主机调用 vagrant up
时,它都会启动您的 python 服务器(作为 vagrant 用户)
这样您就不再需要该脚本了,只需使用 vagrant up
即可正常启动您的 VM
我创建了三个 .bat 文件来启动、停止 vagrant 并通过 ssh 连接。
为了启动 vagrant,还在 Windows 启动时将此添加到自动 运行:
cd /d "C:\Homestead"
start vagrant up
停止无业游民:
@echo off
cd /d "C:\Homestead"
start vagrant halt
以及通过 ssh 连接到本地服务器
cd /d "C:\Homestead"
vagrant ssh
这是我目前在批处理文件中的内容:
set root="C:\Users\esohlberg\lwebsite"
cd %root%
vagrant up
vagrant ssh -- -t "source lw/bin/activate && cd /vagrant/; ./manage.py runserver 0.0.0.0:8000"
cmd /k
Vagrant 启动后,我激活一个 virtualenv,cd 到正确的位置,然后 运行 一个服务器。执行此命令将我带到服务器 运行ning,在那里我可以看到
System check identified no issues (0 silenced).
August 24, 2018 - 12:33:12
Django version 2.0.3, using settings 'lwebsite.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
然而,当我使用 CONTROL-C 退出时,我看到了
Connection to 127.0.0.1 closed.
而且我已经不在 Vagrant 了。是否有可能以这样的方式设置命令,一旦服务器退出,我就留在 /vagrant/ 目录中,连接仍然存在并且 Vagrant 的 virtualenv 仍然处于活动状态?这将使我能够更轻松地再次管理站点或 运行 服务器。
我已经看过 https://www.vagrantup.com/docs/provisioning/shell.html,但这些示例似乎显示了仅在配置期间执行的命令,我不想每次执行此文件时都这样做。
I've already looked at https://www.vagrantup.com/docs/provisioning/shell.html, but the examples seem to show commands executed only during provisioning, which I don't want to do every single time I execute this file.
您找对地方了,您想要的是 运行 VM 启动时的命令,以便您可以执行以下操作:
config.vm.provision "shell", :inline => "source lw/bin/activate && cd /vagrant/; ./manage.py runserver 0.0.0.0:8000", :run => 'always', :privileged => false
这将确保每次您从主机调用 vagrant up
时,它都会启动您的 python 服务器(作为 vagrant 用户)
这样您就不再需要该脚本了,只需使用 vagrant up
我创建了三个 .bat 文件来启动、停止 vagrant 并通过 ssh 连接。
为了启动 vagrant,还在 Windows 启动时将此添加到自动 运行:
cd /d "C:\Homestead"
start vagrant up
停止无业游民:
@echo off
cd /d "C:\Homestead"
start vagrant halt
以及通过 ssh 连接到本地服务器
cd /d "C:\Homestead"
vagrant ssh