Neuere Versionen von Chef von Opscode stellen eine interessante Ressource zur Verfügung: ruby_block
Das sind wirklich tolle Neuigkeiten, denn damit lassen sich schnell Lösungen implementieren.
Beispielsweise kann man damit einen speziellen HTTP Request während eines Chef Laufes machen: einen GET Request an den localhost, aber mit dem Host Header auf einen FQDN gesetzt:
Installation eines Ruby Http Clients
Für dieses Beispiel müssen wir zuerst einen Ruby Http Client installieren. Ich habe hier das Gem Curb, welches auf libcurl aufbaut, verwendet. Also installieren wir diesen als erstes.
1 curl_devel = package "curl-devel" do
2 action :install
3 end
4
5 curl_devel.run_action(:install)
Mit dieser Schreibweise weisen wir OpsChef an den Code schon in der Compile-Phase des OpsChef Laufes auszuführen. Das ist notwendig, da wir im selben Lauf die Bibliothek verwenden wollen. Der normale package Aufruf würde nur dafür sorgen, dass curl-devel nach dem Opschef Lauf installiert ist.
Nun brauchen wir noch die Ruby Anbindung von libcurl, das Gem curb
1 curb_gem = gem_package "curb" do
2 action :install
3 end
4
5 curb_gem.run_action(:install)
Wie gehabt muss das wieder hier wieder in der Compile-Phase geschehen. Damit sind die Vorbereitungen für unseren ruby_block fast abgeschlossen. Wir müssen Opschef noch mitteilen, dass wir curb jetzt auch verwenden wollen. Dazu muss der Gem Pfad neu geladen und curb required werden.
1 Gem.clear_paths
2
3 require 'curb'
Ruby Code in Aktion
So. Jetzt können wir endlich unseren ruby_block verwenden.
1 ruby_block "do-http-request-with-cutom-header" do
2 block do
3 timeout = 600
4 host = "localhost:8080"
5 real_host = "my.realhost.com"
6 Chef::Log.info "call get on #{host}, maximal request time: #{timeout} seconds"
7 c = Curl::Easy.new("http://#{host}/maintenance/do_something") do |curl|
8 curl.headers['Host'] = real_host
9 curl.verbose = true
10 curl.timeout = timeout
11 end
12 c.perform
13 if c.response_code == 200
14 Chef::Log.info "GET success! response was:#{c.body_str}"
15 else
16 Chef::Log.error "GET FAILED. response code #{c.response_code}, body: #{c.body_str}"
17 end
18 end
19 action :create
20 end
Wie das Beispiel zeigt kann man mit dieser Ressource wirklich sehr viel machen.
Weitere Artikel die Sie interessieren könnten:
Deployment von Java Web Applikationen mit Chef von OpscodeThere is a rework of the data driven deployment of java web applications. This Vagrant project on github ( https://github.com/iteh/vagrant-demos/ ) showcases the application cookbook for chef with a reworked application definition and LWRP for...
Links der Woche vom 2011-05-23 bis 2011-05-29Diese Woche Links zu den Themen Windows, Ruby, opscode, JavaScript, maps, Leaflet, WordPress, Chef, windows, powershell, opschef, ios, ruby, devops, sysadmin, monitoringsucks
Links der Woche vom 2011-05-16 bis 2011-05-22Diese Woche Links zu den Themen coffeebeans, Rails, CoffeeScript, Array, Ruby, Chef, Django, zo, devops, sysadmin, git, chef, CSS3, HTML5, WordPress, nipplegate, MongoDB, rails, rails3, asciicast, test, Android, opschef, Gem, aws, slim, Haml, ruby
Links der Woche vom 2011-05-09 bis 2011-05-15Diese Woche Links zu den Themen wi, opschef, ActiveAdmin, rails, ror, ruby, HTML5, Chef, cnet, MongoDB, Sinatra, Rack, apple, git, aws, chef, opscode, sysadmin, Ksplice, noSQL, RubyTutorials, CSS3, EC2, AWS, MacRuby, iOS, m
Links der Woche vom 2011-05-02 bis 2011-05-08Diese Woche Links zu den Themen rails, rack, torquebox, jruby, oreilly, opschef, sh, doc, shell, AWS, veewee, devops, mcollective
Links der Woche vom 2011-04-25 bis 2011-05-01Diese Woche Links zu den Themen op, oschef, opscode, LWRP, Noah, chef, devops, opschef, rails, gem, railscast, Chef
Links der Woche vom 2011-04-11 bis 2011-04-17Diese Woche Links zu den Themen ipad, iphone, opschef, ruby, OpenCV, detection, image, Weinberg, Ohai, automation, pr, test, gem, cloudfoundry, devops, cfoundry
Data Driven Deployment einer Java Web Application mit Chef SoloChef Application Cookbook Showcase Dieses Vagrant Projekt auf unserem Github Repository ( https://github.com/iteh/vagrant-demos/ ) zeigt die Verwendung des Application Cookbooks für Chef
Links der Woche vom 2011-04-04 bis 2011-04-10Diese Woche Links zu den Themen Pow, Rack, ActiveRecord, Rails, Algorithms, Ruby, rails, optimize, CSS3, railscasts, chat, macbook, opschef, ruby
Links der Woche vom 2011-03-28 bis 2011-04-03Diese Woche Links zu den Themen design, utilities, rails, asciicast, gem, ux, Awesome, jQuery, devops, Git, radiantcms, rvm, opschef, osx, MacRuby, chef, opscode, Rails, i18n, java, Vagrant, automation, Typography, Type


