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 >