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