SlideShare a Scribd company logo
a brief introduction to

    Vagrant
原來 Virtual Box 可以這樣玩


     http://ihower.tw
   2013/4/20@osdc.tw
我是誰?
• 張⽂文鈿 a.k.a. ihower
 •   http://ihower.tw

 •   http://twitter.com/ihower

• Ruby Developer since 2006
• CTO, Faria Systems Ltd.
• The organizer of RubyConf Taiwan
 •   http://rubyconf.tw
We’re hiring
Ruby on Rails developer
Agenda
•   Why?
•   What’s Vagrant
•   Features
    •   Shared Folder
    •   Networking
    •   Provisioning
    •   Pachaging
    •   Multi-VM
    •   More Providers
•   Conclusion
Why?
WebOps
WebOps


• 如何⾃自動化安裝和設定伺服器?
WebOps


• 如何⾃自動化安裝和設定伺服器?
• 需要開機器進⾏行安裝測試
缺點
缺點

• 無論是實體機器或 VPS, AWS EC2
缺點

• 無論是實體機器或 VPS, AWS EC2
• 緩慢的 Feedback loop
缺點

• 無論是實體機器或 VPS, AWS EC2
• 緩慢的 Feedback loop
 • 環境弄髒了,重灌很慢
WebDev
WebDev

• 如何設定開發環境?
WebDev

• 如何設定開發環境?
• 拿到⼀一個新專案,怎樣才能跑起來呢?
WebDev

• 如何設定開發環境?
• 拿到⼀一個新專案,怎樣才能跑起來呢?
 • 看 README
WebDev

• 如何設定開發環境?
• 拿到⼀一個新專案,怎樣才能跑起來呢?
 • 看 README
 • 有 setup script?
WebDev

• 如何設定開發環境?
• 拿到⼀一個新專案,怎樣才能跑起來呢?
 • 看 README
 • 有 setup script?
 • 不斷嘗試錯誤,找出 dependency
WebDev (cont.)
WebDev (cont.)


• 這功能在我電腦上是正常的
WebDev (cont.)


• 這功能在我電腦上是正常的
• 開發環境跟 Production 環境越接近,bug
 就越少
缺點
缺點

• 不總是 works
缺點

• 不總是 works
• 不是⾃自動化
缺點

• 不總是 works
• 不是⾃自動化
• 無法驗證正確
缺點

• 不總是 works
• 不是⾃自動化
• 無法驗證正確
• 不是 Isolated,不同機器環境就不同
缺點

• 不總是 works
• 不是⾃自動化
• 無法驗證正確
• 不是 Isolated,不同機器環境就不同
• 也是很慢
Solution
Virtual Machine
    ⽼老梗: 虛擬化
VM Providers
•   Virtual Box
•   Vmware Fusion
•   Parallels
•   LXC
•   KVM
•   Cloud computing:
    •   AWS EC2
    •   Rackspace Cloud
使⽤用 VM 的好處
使⽤用 VM 的好處
• Isolated
使⽤用 VM 的好處
• Isolated
• Repeatable
使⽤用 VM 的好處
• Isolated
• Repeatable
• Local (i.e. Fast)
使⽤用 VM 的好處
• Isolated
• Repeatable
• Local (i.e. Fast)
• Host-OS agnostic
使⽤用 VM 的好處
• Isolated
• Repeatable
• Local (i.e. Fast)
• Host-OS agnostic
• Anyone can do it (Faster on-boarding)
使⽤用 VM 的好處
• Isolated
• Repeatable
• Local (i.e. Fast)
• Host-OS agnostic
• Anyone can do it (Faster on-boarding)
• Less bugs
Vagrant
http://www.vagrantup.com/
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
Vagrant
•   Vagrant uses VirtualBox to build configurable,
    lightweight, and portable virtual machines
    dynamically
•   Open Source: MIT license
•   It support more providers recently:
    •   VMware Fusion
    •   AWS EC2
    •   Rackspace
The creator

• Mitchell Hashimoto
• 從 2010 年開始
• 2012/11 成⽴立 Hashicorp 公司作商業⽀支
 持,並提供更多(付費) Providers,包括
 VMware Fusion, Workstation 和 vSphere 等
 等。
Who use it?
•   Mozilla, Firefox
•   BBC News
•   New York Times
•   Openstack
•   NOKIA
•   Livingsocial
•   yammer
•   shopify
•   disqus
•   eventbrite
•   ngmoco
安裝 Vagrant

• 下載安裝 Virtualbox
• 下載安裝 Vagrant
• ⽀支援 Windows, Mac, Linux
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
Warning for
      Ruby developers

• Vagrant 1.1+ 之後不⽤用 rubygems 安裝了
• 主要理由: For non-rubyist
• http://mitchellh.com/abandoning-rubygems
從現有的專案開 VM

•   git clone git://github.com/eduvo/pair_tdd_get_started.git

• vagrant up
•   可以開始寫 Ruby 了
Live Demo
     請不要在會場做
第⼀一次跑需要下載 VM image, 306mb
新開⼀一個 Ubuntu VM

•   vagrant box add precise64
    http://files.vagrantup.com/precise64.box

•   mkdir my_box

•   cd my_box

•   vagrant init precise64

•   vagrant up
Demo
    真的,請不要在會場做
第⼀一次跑需要下載 VM image, 306mb
VM Lifecycle
              (基本指令)


• vagrant up 開機
• vagrant ssh 登⼊入
• vagrant suspend 暫停
• vagrant halt 關機
• vagrant destroy 刪除
Vagrantfile

• Vagrant 是 project-oriented
• 每個專案都有 Vagrantfile 設定檔
• Ruby DSL 語法,不會 Ruby 也很簡單
最基本的 Vagrantfile
Vagrant.configure("2") do |config|

  config.vm.box = "precise64"

  # 如果找不到上述的 box 檔案,從下列網址下載
  config.vm.box_url = "http://files.vagrantup.com/precise64.box"

end
Base Boxes
• 開 VM 的基本 image
• box 是⼀一個檔案
• Vagrant 是 project-oriented,在 project 裡
  ⾯面玩,不影響 Box。
• 官⽅方有包 Ubuntu 10.04/12.04, 32bit/64bit
  for VirtualBox 的 boxes
• 更多第三⽅方 http://vagrantbox.es
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
Box 指令

• vagrant box list 列出
• vagrant box add 新增
• vagrant box remove 刪除
進階功能
• Shared Folder
• Networking
• Provisioning
• Packaging
• Multi-VM
• More providers via plugins
Host OS v.s. Guest VM

               Host OS

    Guest VM    Guest VM   Guest VM
How to Work in a VM?
Shared folder
config.vm.share_folder "foo", "/guest/path", "/host/path",
                       :nfs => true
Shared folder
config.vm.share_folder "foo", "/guest/path", "/host/path",
                       :nfs => true


   • 在 host 和 guest 之間共享檔案
Shared folder
config.vm.share_folder "foo", "/guest/path", "/host/path",
                       :nfs => true


   • 在 host 和 guest 之間共享檔案
   • 例如開發⽤用 Editor 在 host 跑,但是程式
      是在 guest 裡執⾏行
Shared folder
config.vm.share_folder "foo", "/guest/path", "/host/path",
                       :nfs => true


   • 在 host 和 guest 之間共享檔案
   • 例如開發⽤用 Editor 在 host 跑,但是程式
      是在 guest 裡執⾏行

   • 預設 guest 裡的 /vargant 就是專案⺫⽬目錄
Shared folder
config.vm.share_folder "foo", "/guest/path", "/host/path",
                       :nfs => true


   • 在 host 和 guest 之間共享檔案
   • 例如開發⽤用 Editor 在 host 跑,但是程式
      是在 guest 裡執⾏行

   • 預設 guest 裡的 /vargant 就是專案⺫⽬目錄
   • VirtualBox shared folder 效能差,Vagrant
      ⽀支援 NFS
Demo
在 Host OS 裡編輯,在 Guest VM 裡⾯面執⾏行
Networking
        以下三種可以依照需求選擇使⽤用,都⽤用也可以




• Port forwarding
• Host-only networking
• Bridged Networding
Port forwarding
config.vm.network :forwarded_port, guest: 80, host: 8080




 • 設定 host 某個 port 對應到 guest 的某個
    port
 • 例如 host 8080 對應到 guest 80
 • 最簡單
Host-only networking
config.vm.network :private_network, ip: "192.168.33.10"



  • 指定⼀一個 IP
  • Gust VMs 之間可以互通
  • Local only,只有本機可以存取
  • 最好⽤用,⼜又安全
  • 缺點: 可能會跟外部 IP 撞到
Bridge Networking
config.vm.network :public_network

 • 將 VM 橋接到 Host OS 上的網路 device
  • ⽤用 DHCP 拿⼀一個 IP
 • 優點: LAN 上的其他電腦也可以存取
 • 缺點: 不總是 works,會依賴 Router,例
   如飯店或 public wifi
Demo
在 Guest VM 裡開 Web Server
在 Host OS 外⽤用瀏覽器讀取
Provisioning
Server provisioning
Server provisioning

• Server provisioning is a set of actions to
  prepare a server with appropriate systems,
  data and software, and make it ready for
  network operation. (from wikipedia)
Server provisioning

• Server provisioning is a set of actions to
  prepare a server with appropriate systems,
  data and software, and make it ready for
  network operation. (from wikipedia)
• 就是裝 server 啦
Old-school
I’m System Administrator
Old-school
     I’m System Administrator



• 寫⽂文件,照著作
Old-school
       I’m System Administrator



• 寫⽂文件,照著作
• "multi-terminal",開⼀一個視窗打指令,同
 時好幾個 servers 都會執⾏行
Old-school
        I’m System Administrator



• 寫⽂文件,照著作
• "multi-terminal",開⼀一個視窗打指令,同
 時好幾個 servers 都會執⾏行

• 建⽴立 .iso image 以便拷⾙貝新機器
Old-school
        I’m System Administrator



• 寫⽂文件,照著作
• "multi-terminal",開⼀一個視窗打指令,同
 時好幾個 servers 都會執⾏行

• 建⽴立 .iso image 以便拷⾙貝新機器
• 缺點:版本維護
Old-school (cont.)
Old-school (cont.)

• 撰寫 setup shell script
Old-school (cont.)

• 撰寫 setup shell script
• 缺點: shell script 不聰明,不好維護
Old-school (cont.)

• 撰寫 setup shell script
• 缺點: shell script 不聰明,不好維護
 •   再跑⼀一次會裝第⼆二次
Old-school (cont.)

• 撰寫 setup shell script
• 缺點: shell script 不聰明,不好維護
 •   再跑⼀一次會裝第⼆二次

 •   套件之間的 dependency 關係
Old-school (cont.)

• 撰寫 setup shell script
• 缺點: shell script 不聰明,不好維護
 •   再跑⼀一次會裝第⼆二次

 •   套件之間的 dependency 關係

 •   套件的設定檔要如何管理?
Modern provisioning
       I’m DevOps
Modern provisioning
                  I’m DevOps

•   利⽤用 Configuration Management tools
Modern provisioning
                  I’m DevOps

•   利⽤用 Configuration Management tools
    •   Chef
Modern provisioning
                  I’m DevOps

•   利⽤用 Configuration Management tools
    •   Chef
    •   Puppet
Modern provisioning
                   I’m DevOps

•   利⽤用 Configuration Management tools
    •   Chef
    •   Puppet
    •   CFEngine
Modern provisioning
                   I’m DevOps

•   利⽤用 Configuration Management tools
    •   Chef
    •   Puppet
    •   CFEngine
•   撰寫 recipe (Chef) 或 manifest (Puppet) 設定要裝
    什麼東⻄西
Modern provisioning
                   I’m DevOps

•   利⽤用 Configuration Management tools
    •   Chef
    •   Puppet
    •   CFEngine
•   撰寫 recipe (Chef) 或 manifest (Puppet) 設定要裝
    什麼東⻄西
•   receipt 和 manifests 可以重複執⾏行,保持 server
    到最新版。不會發⽣生重裝第⼆二遍的情形。
Modern provisioning
       I’m DevOps
Modern provisioning
            I’m DevOps




• 易於設定 dependencies
Modern provisioning
            I’m DevOps




• 易於設定 dependencies
• 易於除錯
Modern provisioning
            I’m DevOps




• 易於設定 dependencies
• 易於除錯
• 版本控制
Modern provisioning
        I’m DevOps




• 易於設定 dependencies
• 易於除錯
• 版本控制
• 社群及商業⽀支援,不需要全部⾃自⼰己寫
Vagrant ⽀支援
         ⽅方便 DevOps 測試 Recipe




• shell
• Chef
• Puppet
• CFEngine
Vagrantfile Example

config.vm.provision :chef_solo do |chef|

      chef.cookbooks_path = "./cookbooks"
      chef.add_recipe "nginx"
      chef.json = { :nginx => { :worker_processes => "4" } }

end
Chef Example
package "nginx"

service "nginx" do
  supports :status => true, :restart => true, :reload => true
  action [:enable, :start]
end

template "/etc/nginx/nginx.conf" do
  source "nginx.conf.erb"
  notifies :reload, "service[nginx]"
end
Demo
修改 nginx template,再次 provision
 Server 就會套⽤用並重開 nginx
Packaging
將⺫⽬目前的 VM 打包成 Box

• vagrant package 產⽣生 package.box 檔案
• vagrant box add <name> package.box
• 使⽤用時機
 • Package up installed software
 • Use provisioners for configuration and
    managing services
Multi-VM
Multi-VM

• 同⼀一個 Vagrantfile 可以設定多個 VM
• vagrant up 就會同時開起來
• 適合 distributed 和 SOA 開發環境
 •   ⼀一台 Web server

 •   多台 Application servers

 •   ⼀一台 Database server
Vagrantfile example
         指定IP,VMs 之間也可以互通
Vagrant.configure("2") do |config|

  config.vm.define :web do |web|
    web.vm.box = "precise64"
    web.vm.network :private_network, :ip => "192.168.33.11"
  end

  config.vm.define :app do |app|
    app.vm.box = "precise64"
    app.vm.network :private_network, :ip => "192.168.33.12"
  end

  config.vm.define :db do |db|
    db.vm.box = "precise64"
    db.vm.network :private_network, :ip => "192.168.33.13"
  end

end
Demo
⼀一次開三台 VMs!
More providers
     via plugins
VMware Fusion

• 更快
• 更穩定
• 需付費購買
AWS
•   同樣的 vagrant up 指令,可以開 VM 在 EC2 或 VPC 上
•   使⽤用情境:
    •   可以開運算能⼒力的 EC2 機器作開發或測試運算
    •   可以開真正 production 使⽤用的機器作測試
    •   從開發、staging 到 production,都⽤用 vagrant 開 VM
        管理
•   無論 providers,Vagrantfile 皆共⽤用
Demo
vagrant up --provider=vmware_fusion
     vagrant up --provider=aws
Conclusion
   使⽤用情境
Conclusion
              使⽤用情境

• DevOps 開發和測試 Chef/Puppet/etc.
 scripts
Conclusion
              使⽤用情境

• DevOps 開發和測試 Chef/Puppet/etc.
 scripts
• WebDev 可以使⽤用上述 DevOps 開發的
 scripts 安裝出⾮非常接近 production 的開
 發環境
Conclusion
              使⽤用情境

• DevOps 開發和測試 Chef/Puppet/etc.
 scripts
• WebDev 可以使⽤用上述 DevOps 開發的
 scripts 安裝出⾮非常接近 production 的開
 發環境
• QA 測試⼯工程師可以使⽤用 CI 搭配 Vagrant
 來建構⾃自動化的部署測試、⼤大規模的 test
 environment 等等
Vagrant 讓整個 workflow
  從 dev 到 production
     變的⼀一致好⽤用
謝謝!
                    Thank you!
(對 Vagrant 或 Chef 有問題歡迎來 Faria 攤位找我們的 DevOps: Vincent)
References
•   http://www.hashicorp.com/blog
•   http://net.tutsplus.com/tutorials/php/vagrant-what-why-
    and-how/
•   O'Reilly Velocity 2012: Develop and Test Configuration
    Management Scripts with Vagrant
•   LARubyconf 2011: Working in Vurtual Machines-The
    Vagrant Way
•   ChefConf 2012: http://confreaks.com/videos/1672-
    chefconf2012-consistent-local-development-with-vagrant-
    and-chef

More Related Content

PDF
Vagrant教學
Onnie Fong
 
PPTX
Docker 基礎介紹與實戰
Bo-Yi Wu
 
PDF
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
Shengyou Fan
 
PDF
COSCUP 2016 Laravel 部署工作坊 - 部署指南
Shengyou Fan
 
PDF
Visual Studio Code 快速上手指南
Shengyou Fan
 
PDF
凌波微步:wagon + VS Code 的輕功哲學
Shengyou Fan
 
PDF
Automate with Ansible basic (3/e)
Chu-Siang Lai
 
PDF
使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境
Shengyou Fan
 
Vagrant教學
Onnie Fong
 
Docker 基礎介紹與實戰
Bo-Yi Wu
 
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
Shengyou Fan
 
COSCUP 2016 Laravel 部署工作坊 - 部署指南
Shengyou Fan
 
Visual Studio Code 快速上手指南
Shengyou Fan
 
凌波微步:wagon + VS Code 的輕功哲學
Shengyou Fan
 
Automate with Ansible basic (3/e)
Chu-Siang Lai
 
使用 wagon + VS Code 輕鬆打造 Windows 平台 PHP/Laravel 開發環境
Shengyou Fan
 

What's hot (20)

PDF
Continuous Delivery with Ansible x GitLab CI (2e)
Chu-Siang Lai
 
PDF
AWS EC2 for beginner
azole Lai
 
PDF
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
Chu-Siang Lai
 
PDF
Package 安裝與使用
Shengyou Fan
 
PDF
Composer 從入門到實戰
Shengyou Fan
 
PDF
Model 設定與 Seeding
Shengyou Fan
 
PDF
Laravel - 系統全攻略(續)
Vincent Chi
 
PDF
docker intro
koji lin
 
PDF
View 與 Blade 樣板引擎
Shengyou Fan
 
PPTX
Docker tutorial
azole Lai
 
PDF
應用程式佈署
Shengyou Fan
 
PDF
DAE 新变化介绍
Tianwei Liu
 
PDF
開發環境建置
Shengyou Fan
 
PDF
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
Shengyou Fan
 
PPTX
DEV305 - ASP.NET 5 開發攻略
Will Huang
 
PDF
View 與 Blade 樣板引擎
Shengyou Fan
 
PDF
使用 Controller
Shengyou Fan
 
PDF
Package安裝與使用
Shengyou Fan
 
PDF
使用 Controller
Shengyou Fan
 
PDF
給你一個使用 Laravel 的理由
Shengyou Fan
 
Continuous Delivery with Ansible x GitLab CI (2e)
Chu-Siang Lai
 
AWS EC2 for beginner
azole Lai
 
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
Chu-Siang Lai
 
Package 安裝與使用
Shengyou Fan
 
Composer 從入門到實戰
Shengyou Fan
 
Model 設定與 Seeding
Shengyou Fan
 
Laravel - 系統全攻略(續)
Vincent Chi
 
docker intro
koji lin
 
View 與 Blade 樣板引擎
Shengyou Fan
 
Docker tutorial
azole Lai
 
應用程式佈署
Shengyou Fan
 
DAE 新变化介绍
Tianwei Liu
 
開發環境建置
Shengyou Fan
 
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
Shengyou Fan
 
DEV305 - ASP.NET 5 開發攻略
Will Huang
 
View 與 Blade 樣板引擎
Shengyou Fan
 
使用 Controller
Shengyou Fan
 
Package安裝與使用
Shengyou Fan
 
使用 Controller
Shengyou Fan
 
給你一個使用 Laravel 的理由
Shengyou Fan
 
Ad

Viewers also liked (20)

PDF
Vagrant For DevOps
Lalatendu Mohanty
 
PDF
Introduction to Vagrant
Marcelo Pinheiro
 
PDF
Ruby 程式語言綜覽簡介
Wen-Tien Chang
 
PDF
Yet another introduction to Git - from the bottom up
Wen-Tien Chang
 
PDF
ALPHAhackathon: How to collaborate
Wen-Tien Chang
 
KEY
Vagrant
Michael Peacock
 
PDF
Vagrant and docker
DuckDuckGo
 
PDF
Infrastructure testing with Jenkins, Puppet and Vagrant - Agile Testing Days ...
Carlos Sanchez
 
PDF
Git 版本控制系統 -- 從微觀到宏觀
Wen-Tien Chang
 
PDF
淺談 Startup 公司的軟體開發流程 v2
Wen-Tien Chang
 
PDF
那些 Functional Programming 教我的事
Wen-Tien Chang
 
PDF
Vagrant + Docker provider [+Puppet]
Nicolas Poggi
 
PDF
不妥協的河蟹之道
Ken Kuan
 
ODP
"Up" with vagrant and docker
Hiroshi Miura
 
PDF
從 Classes 到 Objects: 那些 OOP 教我的事
Wen-Tien Chang
 
PPTX
Behavior Driven Development on C.C.Agile
Sam Huang
 
PPTX
Vagrant and Docker
Nascenia IT
 
PDF
Virtualization with Vagrant (ua.pycon 2011)
Dmitry Guyvoronsky
 
PDF
RubyConf Taiwan 2011 Opening & Closing
Wen-Tien Chang
 
PPTX
Vagrant-Overview
Crifkin
 
Vagrant For DevOps
Lalatendu Mohanty
 
Introduction to Vagrant
Marcelo Pinheiro
 
Ruby 程式語言綜覽簡介
Wen-Tien Chang
 
Yet another introduction to Git - from the bottom up
Wen-Tien Chang
 
ALPHAhackathon: How to collaborate
Wen-Tien Chang
 
Vagrant and docker
DuckDuckGo
 
Infrastructure testing with Jenkins, Puppet and Vagrant - Agile Testing Days ...
Carlos Sanchez
 
Git 版本控制系統 -- 從微觀到宏觀
Wen-Tien Chang
 
淺談 Startup 公司的軟體開發流程 v2
Wen-Tien Chang
 
那些 Functional Programming 教我的事
Wen-Tien Chang
 
Vagrant + Docker provider [+Puppet]
Nicolas Poggi
 
不妥協的河蟹之道
Ken Kuan
 
"Up" with vagrant and docker
Hiroshi Miura
 
從 Classes 到 Objects: 那些 OOP 教我的事
Wen-Tien Chang
 
Behavior Driven Development on C.C.Agile
Sam Huang
 
Vagrant and Docker
Nascenia IT
 
Virtualization with Vagrant (ua.pycon 2011)
Dmitry Guyvoronsky
 
RubyConf Taiwan 2011 Opening & Closing
Wen-Tien Chang
 
Vagrant-Overview
Crifkin
 
Ad

Similar to A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩 (20)

PDF
Vagrant introduction
Chyi-Shian Jiang
 
PDF
Envrionment as a code with vagrant & chef
mingjin
 
PPTX
hicloud PaaS 雲創平台 PHP 運行環境介紹
hicloud-paas
 
PDF
雲端技術發展趨勢研討會會
geego
 
PDF
BAS010_虛擬化基礎_v190330
rwp99346
 
PPT
BAS010_虛擬化基礎_v190330 (View online)
rwp99346
 
PDF
Ezilla
hs1250
 
PPTX
Some tips
Wei-Bo Chen
 
PDF
BAS010_虛擬化基礎_v190325-Draft
rwp99346
 
PPTX
Track2 -刘继伟--openstack in gamewave
OpenCity Community
 
PPTX
20121111 linux intro
Chang Mt
 
PDF
20150604 docker 新手入門
azole Lai
 
PDF
云计算与开源 刘黎明 世纪互联
Liming Liu
 
PDF
Ruby on Rails 開發環境建置 for Ubuntu
MarsZ Chen
 
PDF
Bitbucket pipeline CI
Zero Huang
 
PDF
BAS011_VMware資料中心虛擬化-基礎_v190418
rwp99346
 
PDF
App house
Fred Chien
 
PDF
Google雲端備份與虛擬伺服器建置工作坊
Chung-Yi Huang
 
PDF
應用程式部署
Shengyou Fan
 
PDF
基于Fuel的超融合一体机
EdwardBadBoy
 
Vagrant introduction
Chyi-Shian Jiang
 
Envrionment as a code with vagrant & chef
mingjin
 
hicloud PaaS 雲創平台 PHP 運行環境介紹
hicloud-paas
 
雲端技術發展趨勢研討會會
geego
 
BAS010_虛擬化基礎_v190330
rwp99346
 
BAS010_虛擬化基礎_v190330 (View online)
rwp99346
 
Ezilla
hs1250
 
Some tips
Wei-Bo Chen
 
BAS010_虛擬化基礎_v190325-Draft
rwp99346
 
Track2 -刘继伟--openstack in gamewave
OpenCity Community
 
20121111 linux intro
Chang Mt
 
20150604 docker 新手入門
azole Lai
 
云计算与开源 刘黎明 世纪互联
Liming Liu
 
Ruby on Rails 開發環境建置 for Ubuntu
MarsZ Chen
 
Bitbucket pipeline CI
Zero Huang
 
BAS011_VMware資料中心虛擬化-基礎_v190418
rwp99346
 
App house
Fred Chien
 
Google雲端備份與虛擬伺服器建置工作坊
Chung-Yi Huang
 
應用程式部署
Shengyou Fan
 
基于Fuel的超融合一体机
EdwardBadBoy
 

More from Wen-Tien Chang (20)

PDF
評估驅動開發 Eval-Driven Development (EDD): 生成式 AI 軟體不確定性的解決方法
Wen-Tien Chang
 
PDF
⼤語⾔模型 LLM 應⽤開發入⾨
Wen-Tien Chang
 
PDF
Ruby Rails 老司機帶飛
Wen-Tien Chang
 
PDF
A brief introduction to Machine Learning
Wen-Tien Chang
 
PDF
RSpec on Rails Tutorial
Wen-Tien Chang
 
PDF
RSpec & TDD Tutorial
Wen-Tien Chang
 
PDF
Exception Handling: Designing Robust Software in Ruby (with presentation note)
Wen-Tien Chang
 
PDF
Exception Handling: Designing Robust Software in Ruby
Wen-Tien Chang
 
PDF
A brief introduction to SPDY - 邁向 HTTP/2.0
Wen-Tien Chang
 
PDF
RubyConf Taiwan 2012 Opening & Closing
Wen-Tien Chang
 
PDF
從 Scrum 到 Kanban: 為什麼 Scrum 不適合 Lean Startup
Wen-Tien Chang
 
PDF
Git Tutorial 教學
Wen-Tien Chang
 
PDF
BDD style Unit Testing
Wen-Tien Chang
 
PDF
RSpec 讓你愛上寫測試
Wen-Tien Chang
 
PDF
Git and Github
Wen-Tien Chang
 
PDF
Service-Oriented Design and Implement with Rails3
Wen-Tien Chang
 
PDF
Rails3 changesets
Wen-Tien Chang
 
PDF
遇見 Ruby on Rails
Wen-Tien Chang
 
PDF
Designing Ruby APIs
Wen-Tien Chang
 
PDF
Rails Security
Wen-Tien Chang
 
評估驅動開發 Eval-Driven Development (EDD): 生成式 AI 軟體不確定性的解決方法
Wen-Tien Chang
 
⼤語⾔模型 LLM 應⽤開發入⾨
Wen-Tien Chang
 
Ruby Rails 老司機帶飛
Wen-Tien Chang
 
A brief introduction to Machine Learning
Wen-Tien Chang
 
RSpec on Rails Tutorial
Wen-Tien Chang
 
RSpec & TDD Tutorial
Wen-Tien Chang
 
Exception Handling: Designing Robust Software in Ruby (with presentation note)
Wen-Tien Chang
 
Exception Handling: Designing Robust Software in Ruby
Wen-Tien Chang
 
A brief introduction to SPDY - 邁向 HTTP/2.0
Wen-Tien Chang
 
RubyConf Taiwan 2012 Opening & Closing
Wen-Tien Chang
 
從 Scrum 到 Kanban: 為什麼 Scrum 不適合 Lean Startup
Wen-Tien Chang
 
Git Tutorial 教學
Wen-Tien Chang
 
BDD style Unit Testing
Wen-Tien Chang
 
RSpec 讓你愛上寫測試
Wen-Tien Chang
 
Git and Github
Wen-Tien Chang
 
Service-Oriented Design and Implement with Rails3
Wen-Tien Chang
 
Rails3 changesets
Wen-Tien Chang
 
遇見 Ruby on Rails
Wen-Tien Chang
 
Designing Ruby APIs
Wen-Tien Chang
 
Rails Security
Wen-Tien Chang
 

A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩