puppet: hash i templates

Wykorzystanie hash-y jest bardzo wygodne, gdyż pozwala utrzymać strukturę danych z informacją o ich wykorzystaniu. Wyobraźmy sobie, że chcemy zarządzać plikiem /etc/exports zarządzającym wyeksportowanymi systemami plików. Niech nasz hash opisujący udostępniane pliki ma postać:

	$fs= 
	{		
		"/export/repos/"  =>
			{
				"10.40.0.20" => 
				{ 
					"server"  => "10.40.0.20",
					"options" => "ro",
				},				
			},
		"/export/ks" =>
			{

				"10.40.0.20" => 
					{ 
						"server"  => "10.40.0.20",
						"options" => "ro",
					},				
			

				"10.40.0.21" => 
					{
						"server" => "10.40.0.21",
						"options" => "rw",
					},
			},

	}	

Wtedy template może wyglądać następująco:

<% @fs.each do |fs_key, fs_machines| %>
<%= fs_key %> <% fs_machines.each do |machine, options| %> <%= machine %>(<%= options['options'] %>) <% end %> 
<% end %>