Foodpusher
¶ ↑
You can use foodpusher gem to control push jobs for Chef Server inside ruby scripts and applications.
Liks to Chef docs: * [docs.chef.io/push_jobs.html]: Chef Push Jobs * [docs.chef.io/api_push_jobs.html]: Push Jobs API
Installation¶ ↑
Add this line to your application's Gemfile:
gem 'foodpusher'
And then execute:
$ bundle
Or install it yourself as:
$ gem install foodpusher
Example: Run job from ruby scripts:¶ ↑
require 'chef/knife' require 'chef/knife/foodpusher' job = { 'command' => 'chef-client', 'nodes' => ['client01.local', 'chef-server'], 'quorum' => 1, 'capture_output' => false, 'env' => {} } Chef::Config.chef_server_url = 'https://chef.devops.foobar.lan/organizations/chef' Chef::Config.client_key = '/vagrant/chef-server.local/.chef/chef.pem' Chef::Config.node_name = 'chef' Chef::Config.ssl_verify_mode = :verify_none pusher = FoodPusher.new(job) # Start Job myjob = pusher.start puts "Job uri #{myjob}" status = (pusher.status myjob)['status'] # Check Job Status while status == 'running' status = (pusher.status myjob)['status'] puts status sleep 1 end # Check Node Status (pusher.node_status job['nodes']).each do |result| puts result end
Outputs¶ ↑
Let's pushing chef-client execution to two nodes…¶ ↑
Job uri {"uri"=>"https://chef.devops.foobar.lan/organizations/chef/pushy/jobs/336d0bf2dc771d3127dffead469381b5"} running running running running running complete {"node_name"=>"client01.local", "status"=>"online", "availability"=>"available"} {"node_name"=>"chef-server", "status"=>"online", "availability"=>"available"}
Outputs description¶ ↑
start a job and getting its uri
{"uri"=>"https://chef.devops.foobar.lan/organizations/chef/pushy/jobs/336d0bf2dc771d3127dffead469381b5"}
getting job status
... running running running complete
getting node status
{"node_name"=>"client01.local", "status"=>"online", "availability"=>"available"} {"node_name"=>"chef-server", "status"=>"online", "availability"=>"available"}
Contributing¶ ↑
Bug reports and pull requests are welcome on GitHub at github.com/lucky-sideburn/foodpusher.