Consuming Chef API from Any Script - Part 1
Its been more than a year since we have adopted Chef
for ThoughtWorks. We use Chef not only for configuration management but
also for provisioning instances. Since most of our infrastructure is
automated many of the services needs to integrate with chef
programmatically.
Knife, the command line interface of chef provides
easy integration via knife plugin and Knife exec. But in this post I’ll
showcase how Chef can be used from any script if you have an API client
configured. At bare minimum we need to set three parameters to get our
script talking to a Chef server, these are Chef server url, node_name
and client key. Once configured we can use Chef API to interact with
chef server. Lets start with enlisting the number of nodes
require 'rubygems'
require 'chef'
Chef::Config[:node_name]='client_name'
Chef::Config[:client_key]='path to client cert.pem'
Chef::Config[:chef_server_url]="http://ur chef server:4000"
Chef::Node.list.each do |node|
puts node.first
end
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)




