最近的一个工作需要在centos的terminal下面使用vagrant和virtual box,最后发现virtualbox对命令行的支持非常好,另外vagrant的Vagrantfile其实可以支持对多个vm的管理。
vagrant的multi-machine定义,可以参见vagrant的文档: vagrant MULTI-MACHINE
设置hostname
1 | config.vm.define "osd1" do |osd1| |
设置相互信任关系
通过命令行,我们可以通过下面的命令设置server的信任关系 1
2ssh-keygen
ssh-copy-id vagrant@osd1 # vagrant 的默认密码也是vagrant
但在vm provision的过程中,由于ssh-copy-id
需要输入密码,所以不能自动完成。
一个可行的办法是,将private key和public key都准备好,放入到vagrantfile所在的目录下,然后在vagrantfile中加入以下provision的代码:
1 | config.vm.define "mon1" do |mon1| |
对于所有的vm都执行上面的代码,那么所有的vm的privatekey和public key都相同,而且都加入到了authroized_keys里面,那么vm相互之间ssh,就不需要密码了。
ssh config
在ssh的配置中,下面两个配置项比较有用: PasswordAuthentication yes
, 允许ssh使用password登录
StrictHostKeyChecking no
,自动保存known_hosts。
1 | # add ssh password |
virtualbox commands
1 | vboxmanage list runningvms |