
package 'apache2' doversion '2.0'endtemplate '/etc/httpd.conf'service 'apache2'



machine 'db' dorecipe 'mysql'endmachine 'web1' dorecipe 'apache'end
> CHEF_DRIVER=vagrant:~/vms> chef-client -z cluster.rbRecipe: talk1::cluster* machine[db] action create- run vagrant up db- write file /etc/chef/client.rb on dbStarting Chef Client, version 11.8.2Recipe: mysql::default* file[/etc/mysql.txt] action create - create new file /etc/mysql.txtChef Client finished, 1 resources updated- run 'chef-client' on db* machine[web1] action create- run vagrant up web1- write file /etc/chef/client.rb on web1- run 'chef-client' on web1Chef Client finished, 2 resources updated
chef-clientprivate_key 'crypt'chef_data_bag_item 'x/y' dosecret_path 'crypt'endmachine 'mydb' dofile '/etc/crypt', 'crypt'end
metal login [node] metal execute [node] metal delete [node] metal converge [node]
machine 'db' dorecipe 'mysql'endmachine 'web' dorecipe 'apache'endmachine 'web2' dorecipe 'apache'end
> chef-client -z -o cluster.rbRecipe: talk1::cluster* machine[db] action create (up to date)* machine[web1] action create (up to date)* machine[web2] action create- run vagrant up web2- write file /etc/chef/client.rb on web2Starting Chef Client, version 11.8.2Recipe: apache::default* file[/etc/apache.txt] action create - create new file /etc/apache.txtChef Client finished, 1 resources updated- run 'chef-client' on web2Chef Client finished, 1 resource updated
CHEF_DRIVER=fog:AWS:default
> chef-client -z cluster.rb



machine 'db' dorecipe 'mysql'endmachine 'web' dorecipe 'apache'endmachine 'web2' dorecipe 'apache'end

1.upto(num_webservers) domachine "webserver#{i}" dorecipe 'apache'tag 'webserver'endend
search('tags:webserver') do |node|node.name =~ /^webserver(\d+)$/if $1.to_i > num_webserversmachine node.name doaction :deleteendendend
with_machine_batch 'my_batch'
1.upto(50) do |i|
machine "webserver#{i}" do
recipe 'apache'
end
end

class MyProvisioner < Provisionerdef allocate_machine(ah, machine, options)id = machine.location['id']if idserver = lookup_server(id)elseserver = create_server(options) machine.location = {'id' => server.id}endendend
machine_options :vagrant_options => { 'vm.box' => 'precise64' },:vagrant_config => 'config.vm.synced_folder "~/code", "/mnt/code"'
machine_options :bootstrap_options => {:image_id => 'ami-2f726546',:flavor_id => 'c1.xlarge'}
machine 'webserver' dodriver 'fog:GoogleCloud:MyAccount'recipe 'webserver'endwith_driver 'fog:AWS:default', :region => 'us-west-1' domachine 'monitor' dorecipe 'monitor'endmachine 'another_webserver' domachine_options :region => 'us-east-1'recipe 'webserver'endend
1.0 Soon.
After 1.0: