awsのインスタンスのデフォルトのホスト名はip-10.x.x.xみたいな感じだけど、覚えられないしzabbixとかの監視側から分かりづらすぎるのでインスタンス作成時につけたタグからchefでホスト名変えています。
base_settingというcookbookがあって、renamehost.rbというレシピを以下のような感じで書いてます。
cookbook_file "/usr/local/sbin/renamehost" do
  source "renamehost"
  owner 'root'
  group 'root'
  mode 0750
end
prd = Chef::EncryptedDataBagItem.load("awskeys","hoge")
prd_id = prd["aws_access_key_id"]
prd_key = prd["aws_secret_access_key"]
prd_region = prd["region"]
dev = Chef::EncryptedDataBagItem.load("awskeys","fuga")
dev_id = dev["aws_access_key_id"]
dev_key = dev["aws_secret_access_key"]
dev_region = dev["region"]
ohai "reload" do
  plugin "hostname"
end
environment = node.chef_environment
role = ("#{node.roles}"[/[\w_-]+/])
if "#{environment}" == 'mng' || "#{environment}" == 'prod' || "#{environment}" == 'test'
  bash "exec-renamehost" do
    not_if { node[:hostname] =~ /^#{role}/ }
    notifies :reload, "ohai[reload]", :immediately
    notifies :restart, "service[rsyslog]", :immediately
    code <<-EOC
      /usr/local/sbin/renamehost `echo #{prd_id} #{prd_key} #{prd_region}`
    EOC
  end
else
  bash "exec-renamehost" do
    not_if { node[:hostname] =~ /^#{role}/ }
    notifies :reload, "ohai[reload]", :immediately
    notifies :restart, "service[rsyslog]", :immediately
    code <<-EOC
      /usr/local/sbin/renamehost `echo #{dev_id} #{dev_key} #{dev_region}`
    EOC
  end
end
include_recipe "base_setting::hosts"
クレデンシャルはdata_bagsにencryptedで入れてます。
renameしてるbashリソースのnotifiesにrsyslogのrestartしてるのはログに出るホスト名変えるためです。
role名がhost名の頭につくことになってるので、not_ifでrole名から始まらなかったら実行されるというガード付けてます。
bashリソース内で実行されてるrenamehostはただのシェルスクリプトで、cookbook_fileで置いてるだけで、
処理内容的には自ホストのメタデータからタグ内容取得してhostnameコマンドでホスト名変えて/etc/sysconfig/networkのHOSTNAMEの値を差し替えてます。
hostsはohaiのreloadがimmediatelyで終わった後のタイミングでtemplateで配っています。
(immediatelyつけなかったらどうなるかというと全てのレシピが流れたあとに実行されるようです。
 参考:http://www.engineyard.co.jp/blog/2013/chef-recipe-lifecycle/)
たとえば以下のようなファイル。
127.0.0.1  localhost <%= node['hostname'] %> localhost.localdomain localhost4 localhost4.localdomain4
<%= node['ipaddress'] %>	<%= node['hostname'] %> localhost
zabbix_agentd.confとかのHostnameも変えた値が入るようにrunlist的に後ろのほうになってます。
今のところこんな感じです。
Ohaiのプラグインの話は「Chef活用ガイド」の3章あたりに色々のってました。