iT邦幫忙

DAY 8
0

用Packer, Vagrant和Salt秒殺你的環境建置系列 第 8

Day 8 - Vagrantfile and Provider

  • 分享至 

  • xImage
  •  

什麼是 Provider 呢

就是Vagrant 建立VM 的提供者
以之前的 Vagrantfile 範例, Virtualbox 和 VMware workstation/fusion 就是provider
另外還有 AWS, Vsphere, Azure, Openstack 等等...

在第一篇提過,Vagrant 最令我感到方便的就是你可以透過 Vagrant 操作不同的Provider
大大節省你操作的步驟

舉例來說

假設你今天要開 Azure 的 VM,你必須要到Azure的網頁去操作
要開AWS的VM,要到AWS的網頁去操作
用 Vagrant 之後,你可以用本來的 Vagrant command 在公有雲,Local VM,私有雲間自由切換

話不多說,看個範例
用以下這個範例
你只要使用 Vagrant up 加上 provider 參數,就可開啟不同來源的機器
例如我要開啟 Vsphere 的機器,我只要下 vagrant up --provider=vsphere
要開 AWS 的機器,我只要下 vagrant up --provider=aws

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  # 我們定義一個 Ubuntu 的機器
  # box 的需求是對於 local 的 VM 才需要的
  # 所以在 provider 是 vmware_fusion 或 Virtualbox 時,才會用到這個設定
  config.vm.box = "hashicorp/precise64"

  # vmware_fusion
  config.vm.provider "vmware_fusion" do |v, override|
      override.vm.box = "precise64_vmware"
      v.gui = false
  end

  # vsphere
  config.vm.provider :vsphere do |vsphere|
    # 對於私有雲及公有雲,要clone 的vm 是儲存在雲端上的
    # 所以 box 使用 dummy box 來達到這個目的
    vsphere.vm.box = "nkhasanov/vsphere-simple"
    vsphere.host = 'YOURIP'
    vsphere.compute_resource_name = 'YOUR DATACENTER'
    vsphere.resource_pool_name = 'YOUR RESOURCE POOL'
    vsphere.insecure = true
    vsphere.template_name = 'VM TEMPLATE'
    vsphere.name = "#{YOUR_NAME}-test-machine"
    vsphere.user = 'administrator'
    vsphere.password = '$p1unK_Lab'
    vsphere.vm_base_path = 'vmware_template'
    vsphere.linked_clone = true
  end

  # virtual box
  config.vm.provider "virtualbox" do |vb|
      vb.gui = false
  end

  # aws
  config.vm.provider :aws do |aws, override|
      # aws configurations
      aws.access_key_id = "#{YOUR_AWS_ACCESS_KEY_ID}"
      aws.secret_access_key = "#{YOUR_AWS_ACCESS_KEY}"
      aws.keypair_name = "#{YOUR_NAME}"
      aws.security_groups = "#{YOUR_NAME}"
      aws.instance_type = "t2.small"
      aws.region = "us-east-1"
      # ubuntu 14.04 x64
      aws.ami = "ami-864d84ee"

      # override info
      override.ssh.username = "ubuntu"
      override.ssh.private_key_path = "#{YOUR_AWS_PRIVATE_KEY_PATH}"
      override.vm.synced_folder "#{YOUR_SYNC_FOLDER}", "/vagrant", type: "rsync"
      override.vm.box = "dimroc/awsdummy"
  end

end

上一篇
Day 7 Vagrant + VMware Workstation and fusion
下一篇
Day 9 - Advanced Vagrantfile(編輯中)
系列文
用Packer, Vagrant和Salt秒殺你的環境建置16
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言