Re: [請益] 自動化佈署(Chef, Ansible, Salt)

作者: chehsunliu (阿勳)   2016-09-18 13:32:34
個人是有稍微用過Chef
但沒寫過Java web app
更沒有在windows上用過Chef
所以只能給點想法XD
※ 引述《Sanbeishuu (三杯鼠)》之銘言:
: 請問主流的幾款自動化佈署軟體有無較適合單純的update某個web application的呢?
: 一開始試了Jenkins,發現他好像不是這樣的用途。後來才發現應該是其他的像是
: Puppet, Chef, SaltStack, Ansible, Juju?
: 目前看起來1跟2是Ruby派,3跟4是Python派,小弟是純Java派,所以沒特別偏好。
: 但如果可以的話是傾向Py派,但其實各款的script好像也不一定是用Py或Ruby寫..
語言我覺得沒有很重要啦
不管是Python、Ruby或者是Java都易學易讀易維護
你會Java那麼學Python或Ruby也只要花你一點點時間而已
何況是deploy工具,只需要最基本的語法
我覺得熟悉運作流程跟背後邏輯反而比較難
: 主要使用情境如下:
: 1. Standalone & portable
: 希望是可以單純locally的去run,run這一台機器本身的deployment。
: 貌似這類軟體都是為了cloud management,所以都有server/client的架構。
: 目前只先略略survey了Chef,應該是有單純Chef-client跑CookBook的功能。
: SaltStack有看到masterless跟standalone的documentation的樣子。
: 另外還希望這是可以portable的,也就是我可以調整好script後打包起來,
: 然後交給客戶在on-premises的情境下,double click去完成deployment。
Chef可以遠端也可以本地端
因為它其實都是在本地端下chef-client這個指令
control client from server/workstation:
knife ssh 'name:node01' "sudo chef-client -o 'recipe[project::deploy]'"
locally on node01:
sudo chef-client -z -E mylocalenv -o 'role[web],recipe[project::deploy]'
前者是因為已經在chef server上定義node01的環境是mylocalenv以及role是web
後者因為是locally所以要指定
不過你現在是要double click我就比較不確定怎樣做才是best practice
: 2. 只單純的deploy一個Java web application到tomcat
: 沒有要做複雜的server setup跟provisioning。想達到的其實只是單純的
: upgrade某個web application而已。所以整個flow有點類似以下這樣
: 已經有一個application跑在tomcat。該application有a.xml跟b.properties檔案
: a.xml的內容會類似如下
: <Property>
: <Name>ServerURL</Name>
: <Value>192.168.1.2</Value>
: </Property>
: b.properties的內容會類似如下
: database.host=192.168.112.25
: database.port=5432
: 有一個新的版本出來了,當然他是一個war檔。war檔內一樣有a.xml跟b.properties
: 只是這時war檔內的這些configure値會是default狀態。例如:
: <Property>
: <Name>ServerURL</Name>
: <Value>localhost</Value>
: </Property>
: database.host=127.0.0.1
: database.port=5432
: 自動化的把war檔解壓,將a.xml跟b.properties內容與正在運行的
: application有不同的地方做更改。然後可能必須在壓回去war包,
: call tomcat的rest API去進行deploy,如此將web app upgrade,
: 又不需要人工去處理這些application properties的設定値。
這個在Chef是用template帶attribute去做
假設你的Chef repository長這樣:
chef-repo/
cookbooks/
project/
recipes/
stop_tomcat.rb
start_tomcat.rb
pull_code.rb
deploy.rb
templates/default/
a.xml.erb
b.properties.erb
environments/
mylocalenv

Links booklink

Contact Us: admin [ a t ] ucptt.com