puppet-rundeck-2013 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/README.rdoc +15 -2
  2. data/Rakefile +1 -1
  3. data/VERSION +1 -1
  4. data/lib/puppet-rundeck.rb +26 -4
  5. metadata +5 -5
@@ -1,3 +1,6 @@
1
+ {<img src="https://badge.fury.io/rb/puppet-rundeck-2013.png" alt="Gem Version" />}[http://badge.fury.io/rb/puppet-rundeck-2013]
2
+
3
+
1
4
  = puppet-rundeck-2013
2
5
 
3
6
  Integrates Puppet with RunDeck.
@@ -17,9 +20,11 @@ Requires:
17
20
 
18
21
  == Installation
19
22
 
23
+
20
24
  Install the gem:
21
25
 
22
- $ sudo gem install puppet-rundeck
26
+ $ sudo gem install puppet-rundeck-2013
27
+
23
28
 
24
29
  == Usage
25
30
 
@@ -59,10 +64,15 @@ on the same puppet server and puppet-rundeck instance:
59
64
 
60
65
  project.resources.url = http://localhost:8144/tag/production
61
66
 
67
+ You can also specify a required facts to filter the node list, to provide different project URLs based
68
+ on the same puppet server and puppet-rundeck instance:
69
+
70
+ project.resources.url = http://localhost:8144/facts/timezone=UTC&uptime_days=0
71
+
62
72
  In the version puppet-rundeck-2013 you can also pass configuration flags for puppet-rundeck.
63
73
 
64
74
  - user=rundeck_ssh_username - to override SSH user for Rundeck
65
- - use_tags=0 - to avoid adding default tags puppet from puppetmaster
75
+ - use_tags=0 - to avoid adding default tags puppet from puppetmaster. Disabling tags drastically speeds up result generation.
66
76
  - add_facts=fact1,fact2,fact3 - list of facter facts that will be added as tags for rundeck
67
77
 
68
78
  Examples:
@@ -70,6 +80,9 @@ Examples:
70
80
  Add facts *fqdn* and *ipaddress* to list of tags, set SSH user to *root* and disable puppet-generated tags:
71
81
  curl http://127.0.0.1:8144/?add_facts=fqdn,ipaddress&user=root&use_tags=0
72
82
 
83
+ Add facts *fqdn* and *ipaddress* to list of tags, set SSH user to *root* and disable puppet-generated tags only for nodes with timezone = UTC and having days uptime=0:
84
+ curl http://127.0.0.1:8144/facts/timezone=UTC&uptime_days=0?add_facts=fqdn,ipaddress&user=root&use_tags=0
85
+
73
86
 
74
87
  You can specify some configuration options:
75
88
 
data/Rakefile CHANGED
@@ -9,7 +9,7 @@ begin
9
9
  gem.description = %Q{Provides a resource endpoint for RunDeck from a Puppet Server}
10
10
  gem.files = Dir["{lib,test}/**/*"] + Dir["[A-Z]*"]
11
11
  gem.require_path = "lib"
12
- gem.email = "james@puppetlabs.com"
12
+ gem.email = "LazyDelphiBuilder@gmail.com"
13
13
  gem.homepage = "http://github.com/tdelphi/puppet-rundeck"
14
14
  gem.authors = ["James Turnbull","Aleksey Timohin"]
15
15
  gem.add_dependency "sinatra", "<= 1.3.6"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.11
1
+ 0.0.12
@@ -42,7 +42,7 @@ class PuppetRundeck < Sinatra::Base
42
42
  return input.to_s.to_xs
43
43
  end
44
44
 
45
- def respond(required_tag=nil,uname=nil,use_tags=nil,add_facts=nil)
45
+ def respond(required_tag=nil,required_facts=nil,uname=nil,use_tags=nil,add_facts=nil)
46
46
  response['Content-Type'] = 'text/xml'
47
47
  response_xml = %Q(<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE project PUBLIC "-//DTO Labs Inc.//DTD Resources Document 1.0//EN" "project.dtd">\n<project>\n)
48
48
 
@@ -61,6 +61,13 @@ class PuppetRundeck < Sinatra::Base
61
61
  nodes = Puppet::Node.indirection.search("*")
62
62
  end
63
63
 
64
+ if ! required_facts.nil?
65
+ # this should convert string 'fact1=fact1_value&fact2=fact2_value' to array [fact1, fact1_value, fact2, fact2_value]
66
+ local_required_facts = Hash[*required_facts.split(/[=&]/)].to_a
67
+ else
68
+ local_required_facts = nil
69
+ end
70
+
64
71
  nodes.each do |n|
65
72
  if should_use_tags
66
73
  if Puppet::Node::Facts.respond_to? :find
@@ -77,6 +84,11 @@ class PuppetRundeck < Sinatra::Base
77
84
  end
78
85
 
79
86
  facts = n.parameters
87
+
88
+ if ! local_required_facts.nil?
89
+ next if ! (local_required_facts-facts.to_a).empty?
90
+ end
91
+
80
92
  os_family = facts["kernel"] =~ /windows/i ? 'windows' : 'unix'
81
93
 
82
94
  facts_string = nil
@@ -110,6 +122,12 @@ class PuppetRundeck < Sinatra::Base
110
122
  tags_string = [tags_string,facts_string].join(',')
111
123
  end
112
124
 
125
+ if PuppetRundeck.ssh_port.to_s == '22' then
126
+ hostname_port = ''
127
+ else
128
+ hostname_port = "\:#{PuppetRundeck.ssh_port.to_s}"
129
+ end
130
+
113
131
  response_xml << <<-EOH
114
132
  <node name="#{xml_escape(n.name)}"
115
133
  type="Node"
@@ -120,7 +138,7 @@ class PuppetRundeck < Sinatra::Base
120
138
  osVersion="#{xml_escape(facts["operatingsystemrelease"])}"
121
139
  tags="#{xml_escape(tags_string)}"
122
140
  username="#{xml_escape(targetusername)}"
123
- hostname="#{xml_escape(facts["ipaddress"] + ":" + PuppetRundeck.ssh_port.to_s)}"/>
141
+ hostname="#{xml_escape(facts["ipaddress"] + hostname_port)}"/>
124
142
  EOH
125
143
  end
126
144
  response_xml << "</project>"
@@ -130,11 +148,15 @@ EOH
130
148
  require 'pp'
131
149
 
132
150
  get '/tag/:tag' do
133
- respond(params[:tag], params["user"], params["use_tags"], params["add_facts"])
151
+ respond(params[:tag], nil, params["user"], params["use_tags"], params["add_facts"])
152
+ end
153
+
154
+ get '/facts/:fact' do
155
+ respond(nil, params[:fact], params["user"], params["use_tags"], params["add_facts"])
134
156
  end
135
157
 
136
158
  get '/' do
137
- respond(nil, params["user"], params["use_tags"], params["add_facts"])
159
+ respond(nil, nil, params["user"], params["use_tags"], params["add_facts"])
138
160
  end
139
161
 
140
162
  end
metadata CHANGED
@@ -1,21 +1,21 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet-rundeck-2013
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 7
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 11
10
- version: 0.0.11
9
+ - 12
10
+ version: 0.0.12
11
11
  platform: ruby
12
12
  authors:
13
- - James Turnbull, Aleksejs Timohins
13
+ - James Turnbull, Aleksey Timohin
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2013-10-03 00:00:00 +00:00
18
+ date: 2013-10-31 00:00:00 +00:00
19
19
  default_executable: puppet-rundeck
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency