Guest User

Untitled

a guest
Mar 2nd, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.33 KB | None | 0 0
  1. #!/usr/bin/ruby
  2.  
  3. require 'rubygems'
  4. require 'thor'
  5. require 'chef'
  6. require 'chef/node'
  7. require 'chef/rest'
  8.  
  9. Chef::Config.from_file("/etc/chef/server.rb")
  10.  
  11. API_USERNAME='user'
  12. API_PASSWORD='pass'
  13.  
  14. class Knife < Thor
  15.  
  16. desc "add_recipe", "Add a recipe to a node"
  17. method_options :recipe => :required, :after => :optional, :node => :required
  18. def add_recipe
  19. authenticate
  20. node = @rest.get_rest("nodes/#{options[:node]}")
  21. node.recipes << options[:recipe] if !node.recipes.include?(options[:recipe])
  22. @rest.put_rest("nodes/#{options[:node]}", node)
  23. list_recipes
  24. end
  25.  
  26. desc "remove_recipe", "Remove a recipe from a node"
  27. method_options :recipe => :required, :node => :required
  28. def remove_recipe
  29. authenticate
  30. node = @rest.get_rest("nodes/#{options[:node]}")
  31. node.recipes.delete(options[:recipe]) if node.recipes.include?(options[:recipe])
  32. @rest.put_rest("nodes/#{options[:node]}", node)
  33. list_recipes
  34. end
  35.  
  36. desc "list_recipes", "List a node's recipes"
  37. method_options :node => :required
  38. def list_recipes
  39. authenticate
  40. node = @rest.get_rest("nodes/#{options[:node]}")
  41. puts node.recipes.inspect
  42. end
  43.  
  44. def authenticate
  45. @rest = Chef::REST.new(Chef::Config[:registration_url])
  46. @rest.authenticate(API_USERNAME, API_PASSWORD)
  47. end
  48. end
  49.  
  50. Knife.start
Add Comment
Please, Sign In to add comment