Vagrant 部署python開發環境

Vagrant簡介

Vagrant是一個基於Ruby的工具,用於建立和部署虛擬化開發環境。它使用Oracle的開源VirtualBox虛擬化系統,使用 Chef建立自動化虛擬環境。html

在Windows下,也能夠方便地使用Linux環境開發程序shell

官方文檔 http://docs.vagrantup.com/v2/getting-started/index.htmlapache

box https://vagrantcloud.com/discover/featuredbootstrap

準備工做

下載安裝 VirtualBox https://www.virtualbox.org/wiki/Downloadscentos

下載安裝 Vagrant http://www.vagrantup.com/downloads.html安全

初始化Vagrant

#進入D盤
C:\Windows\system32>d:
#建立一個虛擬機的主目錄,這個目錄會與虛擬機/vagrant保持同步
mkdir vagrant_getting_started
cd vagrant_getting_started
#初始化,這裏須要一個centos的box,在box分享網站上能夠找到chef/centos-6.5
vagrant init chef/centos-6.5
#啓動虛擬機
vagrant up
#登陸虛擬機
vagrant ssh

配置開發環境

su root
Password:vagrant
#更改root密碼,方便SecureCRT登陸 默認虛擬機22端口映射宿主機2222端口
service sshd reload
passwd root
#後續的服務器安全加固措施,可使用key登陸
#下面的操做是讓虛擬機更加穩定
sudo yum update -y
sudo yum install gcc
sudo install kernel-devel

經常使用命令

box管理

vagrant box list #列出可用box
vagrant box add chef/centos-6.5  #添加雲box上的鏡像
vagrant box add chef/centos-6.5 chef/centos-6.5.box  #添加本地box

虛擬機管理命令

vagrant up #啓動
vagrant reload #修改Vagrantfile快速使之快速生效
vagrant halt #關閉
vagrant suspend #暫停
vagrant resume #恢復
vagrant destroy #刪除

打包box

  1. 建立新的文件Vagrantfile.pkg
    Vagrant::Config.run do |config|
        #Forward apache
        config.vm.forward_port 80, 8080
    end
    
  2. 打包Project
    #打包完成後,會在工程根目錄下生成package.box
    vagrant package --vagrantfile Vagrantfile.pkg
    
  3. private_network模式須要清除一下配置
    rm -f /etc/udev/rule.d/70-persistent-net.rules
    

Vagrantfile 配置

Vagrantfile 工程根目錄下,虛擬機的主要配置文件,提供網絡配置,共享配置,環境初始化配置ruby

(支持shell命令及腳本,chef,puppet,salt,Docker)bash

網絡配置

#端口映射
config.vm.network :forwarded_port, guest: 80, host: 8080
#私有網絡
config.vm.network :private_network, ip: "192.168.1.104"
#DHCP接入實體網絡
config.vm.network :public_network
#網卡橋接接入實體網絡
config.vm.network "public_network", bridge: 'en1: Wi-Fi (AirPort)'

共享

#目錄共享
config.vm.synced_folder "E:/Blog", "/home/vagrant/Blog"

環境初始化provision

執行腳本
#!/usr/bin/env bash
yum update
yum install -y apache2
rm -rf /var/www
ln -fs /vagrant /var/www
Vagrant.configure("2") do |config|
  config.vm.box = "chef/centos-6.5"
  config.vm.provision :shell, path: "bootstrap.sh"
end

運行Docker

異常問題

共享加載失敗

vagrant halt
vagrant plugin install vagrant-vbguest
vagrant up
相關文章
相關標籤/搜索