Reference: http://ruby-doc.org/stdlib-1.9.3/libdoc/erb/rdoc/ERB.html
ERB recognizes certain tags in the provided template and converts them based on the rules below:
<% Ruby code -- inline with output %> <%= Ruby expression -- replace with result %> <%# comment -- ignored -- useful in testing %> % a line of Ruby code -- treated as <% line %> (optional -- see ERB.new) %% replaced with % if first thing on a line and % processing is used <%% or %%> -- replace with <% or %> respectively
Create a new “motd” cookbook
$ knife cookbook create motd
Example: ~/cookbooks/motd/recipes/default.rb
# # Cookbook Name:: motd # Recipe:: default # # Copyright 2012, YOUR_COMPANY_NAME # # All rights reserved - Do Not Redistribute # template "/home/motd" do source "motd.erb" owner "root" end
Example: ~/cookbooks/motd/template/default/motd.erb
* You can find out what hashes are defined on a system by running “ohai”
Hostname : <%= node["hostname"] %> Platform : <%= node["platform"] %> Memory Usage <% node["memory"].each_pair do |k,v| %> <%= k %> : <%= v%> <% end %> Block Devices <% node["block_device"].each_pair do |k,v| %> Key: <%= k %> - <%= v%> <% end %> Network Info <% node["network"]["interfaces"].keys.each do |k| %> Key: <%= k %> <% end %> <% node["network"]["interfaces"].values.each do |v| %> Value: <%= v %> <% end %>
Run chef-client with the “motd” cookbook installed and look at the output at
$ cat /home/motd
Hostname: ubuntu01 Platform: ubuntu Memory Usage vmalloc_total : 34359738367kB anon_pages : 129892kB writeback : 0kB dirty : 0kB vmalloc_used : 266104kB vmalloc_chunk : 34359469948kB active : 186264kB buffers : 31252kB commit_limit : 773540kB nfs_unstable : 0kB slab_unreclaim : 11684kB bounce : 0kB slab_reclaimable : 17644kB mapped : 11580kB cached : 190268kB slab : 29328kB inactive : 165136kB free : 105708kB total : 502612kB committed_as : 926460kB page_tables : 4324kB swap : cached0kBfree522236kBtotal522236kB Block Devices Key: sda - timeout30modelVMware Virtual Sremovable0vendorVMware,rev1.0size41943040staterunning Key: sr0 - timeout30modelVMware IDE CDR10removable1vendorNECVMWarrev1.00size1401432staterunning Key: fd0 - removable1size0 Key: loop7 - removable0size0 Key: loop6 - removable0size0 Key: loop5 - removable0size0 Key: loop4 - removable0size0 Key: loop3 - removable0size0 Key: loop2 - removable0size0 Key: loop1 - removable0size0 Key: loop0 - removable0size0 Key: ram15 - removable0size131072 Key: ram14 - removable0size131072 Key: ram13 - removable0size131072 Key: ram12 - removable0size131072 Key: ram11 - removable0size131072 Key: ram10 - removable0size131072 Key: ram9 - removable0size131072 Key: ram8 - removable0size131072 Key: ram7 - removable0size131072 Key: ram6 - removable0size131072 Key: ram5 - removable0size131072 Key: ram4 - removable0size131072 Key: ram3 - removable0size131072 Key: ram2 - removable0size131072 Key: ram1 - removable0size131072 Key: ram0 - removable0size131072 Network Info Key: eth0 Key: lo Value: mtu16436encapsulationLoopbackflagsLOOPBACKUPLOWER_U....< i truncated output > Value: mtu1500typeethencapsulationEthernetflagsBROADCASTM....< i truncated output >
Also for shits and giggles
Example Ohai output:
root@ubuntu01:~# ohai
{ "idletime": "35 minutes 35 seconds", "uptime": "36 minutes 47 seconds", "dmi": { "base_board": { "chassis_handle": "0x0000", "location_in_chassis": "Not Specified", "product_name": "440BX Desktop Reference Platform", "serial_number": "None", "manufacturer": "Intel Corporation", "version": "None", "type": "Unknown", "features": "None", "contained_object_handles": "0", "all_records": [ .. < i truncated output >
![](http://pixel.wp.com/b.gif?host=cookingclouds.com&blog=37431572&post=243&subd=cookingclouds&ref=&feed=1)