Chef 㧠CentOS ã« Playframework2.2.x ã¢ããªããããã¤ãã
CentOS5.10 ã§åä½ç¢ºèªãå¤å CentOS 6.x ããããªå¤ãããªãçã
段éãè¸ãããã
- Play ã¢ããªããªãªã¼ã¹ç¨ã«ã³ã³ãã¤ã«ãã
- Chef ã使ã£ã¦Javaãçªã£è¾¼ã
- Chef ã§ãããã¤ç¨ Cookbook ãä½ã£ã¦é ç½®ãã
- èµ·åã¹ã¯ãªãããæ¸ãã¦ãããã¤ãã
knife solo cook xxxx
ã§ã¶ã¡è¾¼ã
ã¨ããé çªã
Play ã¢ããªããªãªã¼ã¹ç¨ã«ã³ã³ãã¤ã«ãã
ããã¯ç°¡åã
ã¢ããªã±ã¼ã·ã§ã³ãã¼ã ãã£ã¬ã¯ããªã§ play clean dist
ã¨å©ãã ãã
ããã¨ãã³ã³ãã¤ã«ããä¸ã§ãé
å¸ç¨ã® zip ã target/universal ãã£ã¬ã¯ããªã« applicationName-Version.zip
ãªãã¡ã¤ã«ãåºæ¥ä¸ããã
ãããã¤ããã¨ãã«ãã¼ã¸ã§ã³åã¯å°å³ã«éªéã ãã©ãã¾ããã㯠Chef å´ã®è¨å®ã§ã©ãã«ãããã
å°ããã® zip ã解åã㦠bin/applicationName ãå©ãã¨ãµã¼ããèµ·åããã
æ®å¿µãªäºã«ããã¼ã¢ã³èµ·åã§ã¯ãªãã®ã§ãçµäºã¾ã§ã³ã³ããã¼ã«ã奪ã£ã¦ãããç´ æµä»æ§ã ã
ããã¯ãã°è¨å®ã§æ¨æºåºåã«ã¯åããããã°ã«ã ãã¡ãã»ã¼ã¸ãåãããã«ããbin/applicationName &
ã§éããã
PID ãã¡ã¤ã«ã¨ã㯠Play ãåæã«åãã®ã§æ°ã«ããªãã
Chef ã使ã£ã¦ Java ãçªã£è¾¼ã
ã¾ã㯠chef ãªãã¸ããª(kitchen)ãä½ãã
åæï¼chef + knife solo + Berkshelf ã¤ã³ã¹ãã¼ã«æ¸ã¿ãUbuntu ãã¹ãã¯ãã£ã¡åç §
knife solo init chef
ã¨ã§ãå©ãã¨ãchef ãã£ã¬ã¯ããªãä½ããã¦ãããã« kitchen ãä½ãããã
ã¨ãããã㯠Java ãçªã£è¾¼ãããã
chef/Berksfile
ãä½ããã¦ãçãªã®ã§ããããéãã¦ç·¨éã
source "https://api.berkshelf.com" cookbook 'yum' cookbook 'java'
ã³ã³ã½ã¼ã«ä¸ã§ä¸è¨ãå©ãã
cd chef berks vendor cookbooks
ããã¨ãberkshelf ã Java ã® cookbook ãè½ã¨ãã¦ããã
次ã«ãchef/nodes
ãã£ã¬ã¯ããªã«ãã¤ã³ã¹ãã¼ã«è¨å®ãçªã£è¾¼ãã
vi nodes/default.json { "java":{ "jdk_version":"7" }, "run_list":[ "recipe[java]" ] }
ãã㧠knife solo cook [user]@[server] default.json
ã¨å®è¡ããã°ãOSã¯ã¨ããã Java7 ãå
¥ãã
詳細ãªãã·ã§ã³ã¯ opscode community è¦ã¦ã»ããã
Chef ã§ãããã¤ç¨ Cookbook ãä½ã£ã¦é ç½®ãã
次ã«ãããã¤ç¨ cookbook ãä½ãããã
ã¾ããchef ãã£ã¬ã¯ããªä¸ã§ä¸è¨ã®ã³ãã³ããå©ããã
knife cookbook create app -o site-cookbooks/
ããã¨ãchef/site-cookbooks/app
ãã£ã¬ã¯ããªãä½ããã¦ããçã
ãã®ãã£ã¬ã¯ããªã cookbook ã®ä¸ã¤ã®åä½ã
ããã®ãchef/site-cookbooks/app/files/default
ãã£ã¬ã¯ããªã«ãæåã®æé ã§ä½æãã applicationName-version.zip
ããããã¤ãã¦ãã¾ããã
ã§ããã¡ãããã®ã-versionãã®é¨åã¯ãã¼ã¸ã§ã³ã¢ããã®åº¦ã«å¤ããã®ã§ãè¨å®ãã¡ã¤ã«ã«åãåºãã¦ãã¾ãã
vi chef/site-cookbooks/app/attributes/default.rb default['app'][:version] = "0.1-Beta"
ãã¡ãããããã¯åè¿°ã® nodes/default.json
ã§ä¸è¨ã®ããã«æ¸ãã¦ãããã
{ "java":{ "jdk_version":"7" }, "app":{ "version":"0.1-Beta" }, "run_list":[ "recipe[java]", "app" ] }
次ã«ããã®ãã¡ã¤ã«ããããã¤ããã³ã¼ããæ¸ãã
åèï¼ChefでCookbookを作成するときのちょっとしたコツ 9選 - インフラエンジニアway - Powered by HEARTBEATS
vi chef/site-cookbooks/app/recipes.default.rb # # Cookbook Name:: app # Recipe:: default # # Copyright 2014, white-azalea.net # # All rights reserved - Do Not Redistribute # # ãã£ã¬ã¯ããªã¯ç¡ããã°ä½ã directory "/opt" do owner "root" group "root" mode 00600 action :create end directory "/opt/app" do owner "root" group "root" mode 00644 action :create end # node ããããã£ã«è¨å®ãå ¥ã£ã¦ãã fileName = "applicationName-" + node.app.version + ".zip" deployName = "/opt/app/" + fileName # cookbook_file 㧠files å ã®ãã¡ã¤ã«ãããã㤠# ããã°ä½ãããªã cookbook_file deployName do source fileName mode "0755" action :create not_if { File.exist?(deployName) } end # 解åãexecute 㧠shell å©ãã # 解åæ¸ã¿ãªã README ãããã®ã§ããã®å ´åã¯ä½ãããªã execute ("unzip " + deployName) do cwd "/opt/app/" action :run not_if { File.exist?("/opt/app/applicationName-" + node.app.version + "/README") } end
èµ·åã¹ã¯ãªãããæ¸ã
ãããä¸çªé£åããã
åèï¼
CentOSでデーモンの起動スクリプトを書く | taichino.com
Technical Memorandum: CentOS-5 起動スクリプトのスケルトン
ã¾ãã¯ãchef/site-cookbooks/app/templates/default/appservice.erb
ãä¸è¨ã®å
容ã§ä½æããã
#!/bin/bash # chkconfig: 345 98 20 # description: application service start script. # processname: appservice # # /etc/rc.d/init.d/appservice # # Sample application service start script. # # Source function library. . /etc/init.d/functions SERVER_PATH="/opt/uptext/applicationName-<%= node['app']['version'] %>" SERVER_BIN=$SERVER_PATH + "/bin/applicationName" PID_PATH=$SERVER_PATH + "/RUNNING_PID" start() { echo -n "Starting applicationName: " if [ -f $PID_PATH ] then echo "Server already running" else `$SERVER_BIN &` fi return 0 } stop() { echo -n "Shutting down applicationName: " kill `cat $PID_PATH` return 0 } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo "Usage: appservice {start|stop|restart}" exit 1 ;; esac exit $?
åºæ¬çã« erb ãªã®ã§åããã¯ãã
å°ããchkconfigãããã®3è¡ã®ã³ã¡ã³ãã¯ãã¾ããªãããããè¨å®ããªãã¨ãèªåèµ·åã«ç»é²ã§ãã¾ããã
次ã«ããã®è¨å®ããããã¤ã¨èµ·åãOSèµ·åæã®èªåèµ·åã¾ã§æå®ããã
chef/site-cookbooks/app/recipes.default.rb
ã«ä¸è¨ã追è¨ã
# appservice ãèµ·åã¹ã¯ãªãããã£ã¬ã¯ããªã«é ç½® template "/etc/init.d/appservice" do group "root" owner "root" mode 0744 source "appservice.erb" end # appservice ãèµ·å service "appservice" do action :start end # OS èµ·åæã« appservice ãèµ·åããããæå® service "appservice" do action :enable end
knife solo cook xxxx
ã§ã¶ã¡è¾¼ã
å¾ã¯åããã¯ãã