這次去參加Rails Pacific,在第一天的Wordshop發現一個好的東西 先介紹一下Vagrant
Vagrant
Vagrant是可以自動建制虛擬機的工具,夠過指令就可以在VisualBox上面自動置虛擬機器,只要指定你要的作業系統版本,下個指令就可以自動安裝
https://www.vagrantup.com/
chef
Chef可以將我們要部署機器的過程轉換成指令的方式(code),讓我們可以自動化的部署和管理我們的機器,讓我們的機器變成可以版本控制,可以測試,和可以重複使用我們先前建置的程式碼
https://downloads.getchef.com/chef-dk/mac
kitchen
可以整合Vagrant和chef http://kitchen.ci/
下面介紹kitchen的使用方法
kitchen init
接下來會產生.kitchen.yml的檔案如下:
driver: name: vagrant
provisioner: name: chef_solo
platforms: – name: ubuntu-14.04 – name: centos-6.4
suites: – name: default run_list: attributes: `\
可以在platforms上面指定我們要安裝的作業系統版本 例如上面我們指定要使用ubuntu-14.04和centos-6.4
先以打上 kitchen list 看看有那些作業系統版本可以安裝
根據我們之前的設定發現有ubuntu和centos可以安裝
接下來執行
kitchen create default-ubuntu-1404
kitchen create default-centos-64`
就會自動下載這兩個作業系統會透過Vagrant自動安裝到VisualBox上面 非常方便吧!
打開VisualBox,發現已經幫我們自動安裝好ubuntu和centos了
要登入ubuntu的話只要執行
kitchen login default-ubuntu-1404
或是
kitchen login ubuntu
就可以登入系統了
kitchen支援
kitchen driver discover
可以列出kitchen所支援的套件
可以看出kitchen還有支援azure,digitalocean,ec2,gce,backspace,openstack和docker
cookbook
接下來要介紹chef’s cookbook,可以把cookbook當作是我們安裝的這檯機器裡面需要什麼樣的原件
在原來的資料夾裡面新增
touch matadata.rb
內容填上 name "app-ok"
再來是建立一個預設的recipe(食譜)
version "0.1.0"
mkdir recipes touch recipes/default.rb
recipe寫法可以參考 http://docs.getchef.com/chef/dsl_recipe.html
chef的recipe可以使用的資源包含:
- directory,file,user.group – 創建使用者資料
- pakage – system pakage
- bash – 用來執行shell script
- cron – 更新crontab
更多recipe資源的資料可以參考 http://docs.getchef.com/chef/resources.html
例如:
在 recipes/default.rb 新增 package 'git'
然後在 .kitchen.yml 新增我們要跑的run list, 如下: `
package 'ruby'\
driver: name: vagrant
provisioner: name: chef_solo
platforms: – name: ubuntu-14.04 – name: centos-6.4
suites: – name: default run_list: app-ok::default attributes: `\
然後執行
kitchen converge
就會自動安裝好git和ruby在ubuntu和centos上面了