2013-08-07 57 views
16

Tôi mới tham gia và đã thiết lập một vài vm mà tôi sử dụng cho mục đích phát triển và thử nghiệm. Vấn đề của tôi là tôi không thể có được các hộp này để tự động khởi động trên máy tính của mình (Ubuntu). Nó thực sự là khó chịu để đi đến thư mục và vagrant up mỗi máy mỗi khi máy chủ của tôi khởi động.Khởi động VM âm đạo khi khởi động máy chủ

Tôi đã thử thêm một cronjob trông giống như cd path/to/vm/folder && vagrant up nhưng điều này dường như không hoạt động.

Tôi cũng đã thử một cronjob cho VBoxManage nhưng thay đổi âm đạo tên của máy ảo (thay vì số/phiên bản 'vmname_version') mỗi khi VM khởi động.

Trả lời

12

Công việc Cron không phù hợp với trường hợp sử dụng này, nó dành cho các công việc đã lên lịch.

Khi bạn đang chạy Ubuntu làm máy chủ lưu trữ, tôi khuyên bạn nên sử dụng /etc/rc.local, đặt các lệnh trong tập lệnh rc.local được thực hiện ở cuối quá trình init.

Nó sẽ giống như thế này

#!/bin/sh -e 
# 
# rc.local 
# 
# This script is executed at the end of each multiuser runlevel. 
# Make sure that the script will "exit 0" on success or any other 
# value on error. 
# 
# In order to enable or disable this script just change the execution 
# bits. 
# 
# By default this script does nothing.  
cd /path/to/vagrant_vm1 && vagrant up 
cd /path/to/vagrant_vm2 && vagrant up 
exit 0 

LƯU Ý: Sẽ có xung đột cổng trên host nếu bạn bắt đầu hơn 1 hộp Vagrant với chế độ mạng cùng - NAT (mặc định), mà theo mặc định sử dụng cùng một quy tắc chuyển tiếp cổng => khách 22 để lưu trữ 2222.

Nếu bạn cần bắt đầu nhiều hơn 1 hộp (NAT), hãy xem xét sử dụng mạng công cộng (cầu nối) hoặc sử dụng VBoxManage controlvm để khởi động máy ảo, tham khảo trả lời trong Two separate Vagrant machines, windows host, PuTTY - how?

+0

Về lý thuyết đó là những gì tôi muốn tuy nhiên Vagrant dường như có một số vấn đề với điều này, Nó đạt đến "Đang chờ VM khởi động" nhưng không khởi động thành công, nó kết thúc bằng lỗi "Không thành công kết nối với VM thông qua SSH. Vui lòng xác minh VM đã khởi động thành công bằng cách xem giao diện VirtualBox. ". Dù sao cũng cảm ơn bạn! –

+0

@ShrikantPatnaik Xem câu trả lời cập nhật. Tôi nghĩ rằng bạn đang nhấn vào vấn đề xung đột cổng bằng cách bắt đầu nhiều hộp lang thang. –

+0

Naa, Cổng và mọi thứ được cấu hình đúng vì tôi có tất cả chúng chạy đồng thời mà không có vấn đề gì, controlvm hoạt động, nhưng tôi phải sao chép chúng khi tôi trả lời trong câu trả lời của riêng tôi cho câu hỏi. –

0

tôi đã kết thúc nhân bản của VM với VboxManage và chỉ sử dụng VBoxManage startvm $vm --type headless trong một kịch bản init.d

+0

Bây giờ bạn đang hài lòng với 'VBoxManage' hoặc' VBoxHeadless', lang thang là ra khỏi hình ảnh anyway. –

+0

Khá nhiều, nhưng tôi nghĩ rằng đó là hơi hacky. –

4

Dưới đây là một kịch bản khởi động tìm thấy tại http://uhowto.urbylog.info/post/54097294891/an-upstart-script-to-launch-vagrant-box-automatically

Một kịch bản mới nổi để khởi động hộp lang thang tự động Đôi khi nó có thể là cần thiết để bắt đầu các máy ảo lang thang một cách tự động khi khởi động máy chủ. Tương tự như vậy, cung cấp một tắt máy duyên dáng cho một khách khi máy chủ đang được tắt hoặc khởi động lại. Dưới đây là một ví dụ về một kịch bản mới nổi để khởi chạy/tạm dừng một hộp lang thang thay mặt cho người dùng randomjoe. Thay đổi tên người dùng và thư mục Vagrantfile trong tập lệnh bên dưới. Đặt tên cho tệp cấu hình mới nổi của bạn theo mô tả. Tạo một tập tin /etc/init/*.conf cho mỗi Vagrantfile bạn cần và chạy khi khởi động hệ thống. /etc/init/vagrant-precise32.conf:

description "Start vagrant precise32 box on system startup" 
author "uHOWTO" 
env VAGRANTUSR=randomjoe 
env VAGRANTBOXPATH=/home/randomjoe/vagrantboxes/precise32 
start on stopped rc 
stop on runlevel [016] 

pre-start script 
    cd ${VAGRANTBOXPATH} 
    su -c "/usr/bin/vagrant up" ${VAGRANTUSR} 
end script 

post-stop script 
    cd ${VAGRANTBOXPATH} 
    su -c "/usr/bin/vagrant halt" ${VAGRANTUSR} 
end script 
-1

I'v đã kết thúc với một công việc định kỳ đơn giản. Tôi đã phải ngủ, nếu không thì Virtualbox đã phàn nàn rằng nó không được khởi tạo đúng cách.

@reboot cd /home/myuser/VMs/VagrantBox && sleep 20; /bin/su -c "/usr/bin/vagrant up" myuser