cmdb 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9212599111d82e3f236f06fb05aaf87ec0932155
4
+ data.tar.gz: 87200c6133a80e8f2bd02f02697aa0d42c694622
5
+ SHA512:
6
+ metadata.gz: 86b209d6f11b166e981cd7a0eeac50f10a78a8efa5ef4db7c973642c4eb26aa519741b7ffbdbb3e1e266f794e9429c19fb646bdddb749ae18cdd0429f4fc3fa6
7
+ data.tar.gz: 33d7b4855c49ece993167e1dbfd7da504a337fae128a60096d037fcaa51f8b0815658b2ac2ffb32d1875563464b16e1447a85316429dc0d08a0e0c760fbf48e0
data/.gitignore ADDED
@@ -0,0 +1,56 @@
1
+ # simplecov/rcov generated
2
+ coverage
3
+ coverage.data
4
+
5
+ # rdoc generated
6
+ rdoc
7
+
8
+ # yard generated
9
+ doc
10
+ .yardoc
11
+
12
+ # bundler
13
+ .bundle
14
+ pkg
15
+
16
+ # Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore:
17
+ #
18
+ # * Create a file at ~/.gitignore
19
+ # * Include files you want ignored
20
+ # * Run: git config --global core.excludesfile ~/.gitignore
21
+ #
22
+ # After doing this, these files will be ignored in all your git projects,
23
+ # saving you from having to 'pollute' every project you touch with them
24
+ #
25
+ # Not sure what to needs to be ignored for particular editors/OSes? Here's some ideas to get you started. (Remember, remove the leading # of the line)
26
+ #
27
+ # For MacOS:
28
+ #
29
+ .DS_Store
30
+
31
+ # for IntelliJ, RubyMine
32
+ .idea
33
+
34
+ # For TextMate
35
+ #*.tmproj
36
+ #tmtags
37
+
38
+ # For emacs:
39
+ #*~
40
+ #\#*
41
+ #.\#*
42
+
43
+ # For vim:
44
+ #*.swp
45
+
46
+ # For redcar:
47
+ #.redcar
48
+
49
+ # For rubinius:
50
+ #*.rbc
51
+ .rvmrc
52
+ .ruby-gemset
53
+ .ruby-version
54
+
55
+ # For IntelliJ/RubyMine
56
+ .idea/*
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --require=spec_helper
2
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,13 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.1
5
+ bundler_args: --without development
6
+ before_install:
7
+ - gem install --no-document -v '~> 1.10' bundler
8
+ before_script:
9
+ - bundle install
10
+ script:
11
+ - bundle exec rake ci:spec
12
+ - bundle exec rake ci:cucumber
13
+
data/CHANGELOG.md ADDED
@@ -0,0 +1,46 @@
1
+ ### 2.6.0 (2016-03-01)
2
+
3
+ Two new command line options are added to the shim
4
+ `--consul-url` = The URL of the consul agent. Example: http://consul:8500
5
+ `--consul-prefix` = The prefix to use when getting keys from consul. Example: shard403
6
+
7
+ There are two ways of using the shim.
8
+
9
+ 1. Using to replace keys in legacy ruby apps:
10
+ ---------------------------------------------
11
+
12
+ When using the shim to replace keys in configuration files, it is sufficient to specify
13
+ the shard identifier (shard403, shard93, etc) as the prefix. Also prefix is optional so
14
+ in dev environments if you don't have these shard identifier as prefixes, you don't have
15
+ to specify it. When replacing keys in configuration files, the requested keys are loaded
16
+ from consul on demand.
17
+
18
+ Example:
19
+ ```
20
+ bundle exec cmdb shim --consul-url=http://consul:8500 --consul-prefix=shard403 \
21
+ --dir=config -- rainbows -c config/rainbows.rb
22
+ ```
23
+
24
+ 2. Using to populate environment in modern apps:
25
+ ------------------------------------------------
26
+
27
+ The --consul-prefix command line option can be specifed multiple times just like the
28
+ envconsul tool allows and all keys under the specified prefix are loaded in the
29
+ environment and the prefix itself is skipped.
30
+
31
+ Example:
32
+ ```
33
+ bundle exec cmdb shim --consul-url=http://consul:8500 --consul-prefix=shard403/common \
34
+ --consul-prefix=shard403/cwf_public_service --env -- rainbows -c config/rainbows.rb
35
+ ```
36
+
37
+ ### 2.5.0 (2015-07-16)
38
+
39
+ So many changes! View the diffs for info.
40
+
41
+ ### 2.1.0
42
+
43
+ Initial release. Contains the following features:
44
+ - API for querying a CMDB
45
+ - Command-line shim for rewriting config files
46
+ - Server restart feature to aid debugging
data/Gemfile ADDED
@@ -0,0 +1,15 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ gem 'rake'
6
+ gem 'backticks'
7
+ gem 'cucumber'
8
+ gem 'rspec'
9
+
10
+ group :development do
11
+ gem 'yard'
12
+ gem 'pry'
13
+ gem 'pry-byebug'
14
+ end
15
+
data/Gemfile.lock ADDED
@@ -0,0 +1,86 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ cmdb (0.1.0)
5
+ diplomat (~> 0.15)
6
+ listen (~> 3.0)
7
+ trollop (~> 2.0)
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ backticks (0.4.0)
13
+ builder (3.2.2)
14
+ byebug (8.2.2)
15
+ coderay (1.1.1)
16
+ cucumber (2.3.2)
17
+ builder (>= 2.1.2)
18
+ cucumber-core (~> 1.4.0)
19
+ cucumber-wire (~> 0.0.1)
20
+ diff-lcs (>= 1.1.3)
21
+ gherkin (~> 3.2.0)
22
+ multi_json (>= 1.7.5, < 2.0)
23
+ multi_test (>= 0.1.2)
24
+ cucumber-core (1.4.0)
25
+ gherkin (~> 3.2.0)
26
+ cucumber-wire (0.0.1)
27
+ diff-lcs (1.2.5)
28
+ diplomat (0.15.0)
29
+ faraday (~> 0.9)
30
+ json (~> 1.8)
31
+ faraday (0.9.2)
32
+ multipart-post (>= 1.2, < 3)
33
+ ffi (1.9.10)
34
+ gherkin (3.2.0)
35
+ json (1.8.3)
36
+ listen (3.0.6)
37
+ rb-fsevent (>= 0.9.3)
38
+ rb-inotify (>= 0.9.7)
39
+ method_source (0.8.2)
40
+ multi_json (1.11.2)
41
+ multi_test (0.1.2)
42
+ multipart-post (2.0.0)
43
+ pry (0.10.3)
44
+ coderay (~> 1.1.0)
45
+ method_source (~> 0.8.1)
46
+ slop (~> 3.4)
47
+ pry-byebug (3.3.0)
48
+ byebug (~> 8.0)
49
+ pry (~> 0.10)
50
+ rake (10.5.0)
51
+ rb-fsevent (0.9.7)
52
+ rb-inotify (0.9.7)
53
+ ffi (>= 0.5.0)
54
+ rspec (3.4.0)
55
+ rspec-core (~> 3.4.0)
56
+ rspec-expectations (~> 3.4.0)
57
+ rspec-mocks (~> 3.4.0)
58
+ rspec-core (3.4.3)
59
+ rspec-support (~> 3.4.0)
60
+ rspec-expectations (3.4.0)
61
+ diff-lcs (>= 1.2.0, < 2.0)
62
+ rspec-support (~> 3.4.0)
63
+ rspec-mocks (3.4.1)
64
+ diff-lcs (>= 1.2.0, < 2.0)
65
+ rspec-support (~> 3.4.0)
66
+ rspec-support (3.4.1)
67
+ slop (3.6.0)
68
+ trollop (2.1.2)
69
+ yard (0.8.7.6)
70
+
71
+ PLATFORMS
72
+ ruby
73
+
74
+ DEPENDENCIES
75
+ backticks
76
+ bundler (~> 1.10)
77
+ cmdb!
78
+ cucumber
79
+ pry
80
+ pry-byebug
81
+ rake
82
+ rspec
83
+ yard
84
+
85
+ BUNDLED WITH
86
+ 1.11.2
data/README.md ADDED
@@ -0,0 +1,250 @@
1
+ # CMDB
2
+
3
+ [![TravisCI][travis_ci_img]](https://magnum.travis-ci.com/rightscale/cmdb)
4
+ [travis_ci_img]: https://magnum.travis-ci.com/rightscale/cmdb.svg?token=ETyVMY7RGypDf6U8z6jc&branch=master
5
+
6
+ CMDB is a Ruby interface for consuming data from one or more configuration management databases
7
+ (CMDBs). It is intended to support multiple CM technologies, including:
8
+ - JSON/YAML files on a local disk
9
+ - consul
10
+ - (someday) etcd
11
+ - (someday) ZooKeeper
12
+
13
+ The CMDB's command-line tool can also facilitate debugging by watching your application's files
14
+ and sending SIGHUP (or the signal of your choice) to the app server if anything changes.
15
+
16
+ Maintained by
17
+ - [RightScale Inc.](https://www.rightscale.com)
18
+
19
+ ## Why should I use this gem?
20
+
21
+ By using a standardized API for querying inputs, your application is decoupled from the underlying
22
+ configuration management database that our Operations team is using. Today we happen to use JSON
23
+ files that live under /etc/rightscale, but tomorrow we might use a key/value store such as etcd or
24
+ consul (possibly in combination with flat files). This gem will deal with all of that complexity
25
+ and provide you with a simple interface for reading your app's configuration.
26
+
27
+ The gem has two primary interfaces:
28
+ - The `cmdb shim` command populates the environment with config data and/or rewrites hardcoded
29
+ config files, then spawns your application. It can also be told to watch the filesystem for changes and
30
+ send a signal e.g. `SIGHUP` to your application, bringing reload-on-edit functionality to any app.
31
+ - The `CMDB::Interface` object provides a programmatic API for querying configuration. Its `#to_h`
32
+ method transforms the whole configuration into an environment-friendly hash if you prefer to seed the
33
+ environment yourself.
34
+
35
+ The CMDB gem is friendly to 12-factor and "Rails-style" apps and can be used with or without the shim,
36
+ depending on your application's needs.
37
+
38
+ # Getting Started
39
+
40
+ ## Create CMDB Data Files
41
+
42
+ The shim looks in two locations to find data files. In order of precedence:
43
+ 1. `/var/lib/cmdb` -- typically used at deployment time
44
+ 2. `~/.cmdb` -- useful for developers when testing the app
45
+
46
+ The base name (minus extension) of each file is important; it determines the top-level name of
47
+ the keys in that file and it *must be unique* across all of the directories. For instance,
48
+ `my_app.json` defines CMDB keys in the `my_app.*` hierarchy.
49
+
50
+ Create a data file in one of these directories; for example, you might create `my_app.yml` with
51
+ the following contents:
52
+
53
+ db:
54
+ hostname: db1.local
55
+ widgets:
56
+ flavors:
57
+ - vanilla
58
+ - chocolate
59
+
60
+ ## Invoke the CMDB Shim
61
+
62
+ For non-Ruby applications, or for situations where CMDB values are required
63
+ outside of the context of interpreted code, use `cmdb shim` to run
64
+ your application. The shim can do several things for you:
65
+
66
+ 1. Make CMDB values available to your app (in `ENV`, or by rewriting files)
67
+ 2. Change the user before invoking your app (e.g. drop privileges to `www-data`)
68
+ 3. Watch for filesystem changes and reload your app on demand
69
+
70
+ ### Populate the environment for a dotenv-compatible application
71
+
72
+ If you have an app that uses 12-factor (dotenv) style configuration, the shim
73
+ can populate the environment with CMDB values:
74
+
75
+ bundle exec cmdb shim --env
76
+
77
+ # Now your app can refer to ENV['DB_HOSTNAME'] or ENV['WIDGETS_FLAVORS]
78
+ # Note missing "my_app" prefix that would be present if you asked for these using their CMDB key names
79
+
80
+ Note that the data type of CMDB inputs is preserved: lists remain lists, numbers remain numbers,
81
+ and so forth. This works irrespective of the format of your configuration files, and also holds true
82
+ for CMDB values that are serialized to the environment (as a JSON document, in the case of lists).
83
+
84
+ ### Rewriting configuration files with CMDB values
85
+
86
+ If the `--dir` option is provided, the shim recursively scans your working
87
+ directory (`Dir.pwd`) for data files that contain replacement tokens; when a token is
88
+ found, it substitutes the corresponding CMDB key's value.
89
+
90
+ Replacement tokens look like this: `<<name.of.my.key>>` and can appear anywhere in a file as a YAML
91
+ or JSON _value_ (but never a key).
92
+
93
+ Replacement tokens should appear inside string literals in your configuration files so they don't
94
+ invalidate syntax or render the files unparsable by other tools.
95
+
96
+ The shim performs replacement in-memory and saves all of the edits at once, making the rewrite
97
+ operation nearly atomic. If any keys are missing, then no files are changed on disk and the shim
98
+ exits with a helpful error message.
99
+
100
+ *NOTE:* the shim does not perform rewriting in development mode; the expectation is that your app's
101
+ configuration files will already provide reasonable dev-mode defaults and that rewriting them
102
+ is not necessary.
103
+
104
+ Given `my_app.yml` and an application with two configuration files:
105
+
106
+ # config/database.yml
107
+ production:
108
+ host: <<my_app.db.hostname>
109
+ database: my_app_production
110
+
111
+ # config/widgets.json
112
+ {'widgetFlavors': '<<my_app.widgets.flavors>>'}
113
+
114
+ I can run the following command in my application's root directory:
115
+
116
+ bundle exec cmdb shim --dir=config rackup
117
+
118
+ This will rewrite the files under config, replacing my configuration files as
119
+ follows:
120
+
121
+ # config/database.yml
122
+ production:
123
+ host: db1.local
124
+ database: my_app_production
125
+
126
+ # config/widgets.json
127
+ {'widgetFlavors':['vanilla', 'chocolate']}
128
+
129
+ ### Drop Privileges
130
+
131
+ If your app doesn't know how to safely switch to a non-privileged user, the shim
132
+ can do this for you. Just add the `--user` flag when you invoke it:
133
+
134
+ bundle exec cmdb shim --user=www-data whoami
135
+
136
+ ### Reload the App When Code Changes
137
+
138
+ You can pass the `--reload=key.name` option to `cmdb shim` in order to enable filesystem
139
+ watching. The shim will signal your application server whenever files are created,
140
+ updated or deleted, generally causing a graceful restart of the server process.
141
+
142
+ Needless to say, your app server must support graceful restart upon receipt of
143
+ a certain signal! The CMDB gem uses SIGHUP by default, but you can override this
144
+ with --reload-signal=SIGWHATEVER.
145
+
146
+ The parameter names a CMDB key (such as `key.name`) whose value determines whether filesystem
147
+ watching is enabled. It *should* be a boolean, but *may* be nil or any "truthy" value such as a
148
+ number or string. If the key is truthy, then the shim will perform filesystem-watching.
149
+
150
+ ## Query the CMDB Directly
151
+
152
+ Ruby applications can access the CMDB as a Ruby proxy object:
153
+
154
+ # Ready to use; no bootstrapping required.
155
+ require 'cmdb'
156
+
157
+ cmdb = CMDB::Interface.new
158
+ cmdb.get('my_app.my_setting')
159
+ cmdb.get('my_app.some_other_setting')
160
+
161
+ This allows you to read CMDB values from the directly from your code.
162
+
163
+ # Data Model
164
+
165
+ This library models all CMDBs as hierarchical key/value stores whose leaf nodes can be strings,
166
+ numbers, or arrays of like-typed objects. This model is a "least common denominator" simplification
167
+ of the data models of YML, JSON, ZooKeeper and etcd, allowing all of those technologies to be
168
+ treated as interchangeable sources of configuration information.
169
+
170
+ CMDB key names consist of a dot-separated string e.g. `my_app.category_of_settings.some_value`. The
171
+ value of a CMDB key can be a string, boolean, number, nil, or a list of any of those types.
172
+
173
+ CMDB keys *cannot* contain maps/hashes, nor can lists contain differently-typed data.
174
+
175
+ ## Disk-Based Data Sources
176
+
177
+ When the CMDB interface is initialized, it searches two directories for YAML files:
178
+ - /var/lib/cmdb
179
+ - ~/.cmdb
180
+
181
+ YAML files in these directories are assumed to contain CMDB values and loaded into memory in the
182
+ order they are encountered. The hierarchy of the YAML keys is flattened in order to derive
183
+ dot-separated key names. Consider the following YAML file:
184
+
185
+ # beverages.yml
186
+ coffee:
187
+ - latte
188
+ - cappucino
189
+ - mocha
190
+ - macchiato
191
+ tea:
192
+ - chai
193
+ - herbal
194
+ - black
195
+ to_go: true
196
+
197
+ This defines three CMDB values: `beverages.coffee` (a list of four items), `beverages.tea`
198
+ (a list of three items), and `beverages.to_go` (a boolean).
199
+
200
+ ### Key Namespaces
201
+
202
+ The name of a CMDB file is important; it defines a namespace for all of the variables contained
203
+ inside. No two files may share a name; therefore, no two CMDB keys can have the same name.
204
+ Likewise, all keys with a given prefix are guaranteed to come from the same source.
205
+
206
+ ### Overlapping Namespaces
207
+
208
+ Because CMDB files can come from several directories, it's possible for two same-named data files
209
+ to define values in the same namespace. In this case, the behavior of RightService varies depending
210
+ on the value of RACK_ENV or RAILS_ENV:
211
+
212
+ - unset, development or test: CMDB chooses the highest-precedence file and ignores the others
213
+ after printing a warning. Files in `/etc` win over files in `$HOME`, which win over
214
+ files in the working directory.
215
+
216
+ - any other environment: CMDB fails with an error message that describes the problem and
217
+ the locations of the overlapping files.
218
+
219
+ ### Ambiguous Key Names
220
+
221
+ Consider a file that defines the following variables:
222
+
223
+ # confusing.yml
224
+ this:
225
+ is:
226
+ ambiguous
227
+ was:
228
+ very: ambiguous
229
+ extremely: confusing
230
+
231
+ At first glance, ths file defines two CMDB keys:
232
+ - `confusing.this.is` (a string)
233
+ - `confusing.this.was` (a map)
234
+
235
+ However, an equally valid interpretation would be:
236
+ - `confusing.this.is`
237
+ - `confusing.this.was.very`
238
+ - `confusing.this.was.extremely`
239
+
240
+ Because CMDB keys cannot contain maps, the first interpretation is wrong. The second
241
+ interpretation is valid according to the data model, but results in a situation where the type
242
+ of the keys could change if the structure of the YML file changes.
243
+
244
+ For this reason, any YAML file that defines an "ambiguous" key name will cause an error at
245
+ initialization time. To avoid ambiguous key names, think of your YAML file as a tree and remember
246
+ that _leaf nodes must define data_ and _internal nodes must define structure_.
247
+
248
+ ## Network Data Sources
249
+
250
+ TODO: add support for etcd or similar
data/Rakefile ADDED
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'bundler/setup'
5
+ require "bundler/gem_tasks"
6
+
7
+ require 'cucumber/rake/task'
8
+ desc "Run functional tests"
9
+ Cucumber::Rake::Task.new do |t|
10
+ t.cucumber_opts = %w{--color --format pretty}
11
+ end
12
+
13
+ require 'rspec/core'
14
+ require 'rspec/core/rake_task'
15
+ RSpec::Core::RakeTask.new(:spec)
16
+
17
+ task :default => [:spec, :cucumber]
data/TODO.md ADDED
@@ -0,0 +1,3 @@
1
+ Actually respect --quiet
2
+
3
+ Remove reset/late_initialize garbage.
data/bin/console ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "cmdb"
5
+
6
+ require "pry"
7
+ Pry.start
data/bin/setup ADDED
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
data/cmdb.gemspec ADDED
@@ -0,0 +1,22 @@
1
+ Gem::Specification.new do |spec|
2
+ spec.name = 'cmdb'
3
+ spec.version = '0.1.0'
4
+ spec.authors = ['RightScale']
5
+ spec.email = ['rubygems@rightscale.com']
6
+
7
+ spec.summary = %q{Command-line tool for configuration manegement databases}
8
+ spec.description = %q{Reads CMDB variables from files, Consul, and elsewhere.}
9
+ spec.homepage = 'https://github.com/rightscale/cmdb'
10
+ spec.license = 'MIT'
11
+
12
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
13
+ spec.require_paths = ['lib']
14
+
15
+ spec.required_ruby_version = Gem::Requirement.new("~> 2.0")
16
+
17
+ spec.add_dependency 'listen', '~> 3.0'
18
+ spec.add_dependency 'diplomat', '~> 0.15'
19
+ spec.add_dependency 'trollop', '~> 2.0'
20
+
21
+ spec.add_development_dependency 'bundler', '~> 1.10'
22
+ end
data/fixtures/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'sinatra', '~> 1.3'
4
+ gem 'rack', '~> 1.0'
@@ -0,0 +1,19 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ daemons (1.1.9)
5
+ rack (1.6.0)
6
+ rack-protection (1.5.1)
7
+ rack
8
+ sinatra (1.3.6)
9
+ rack (~> 1.4)
10
+ rack-protection (~> 1.3)
11
+ tilt (~> 1.3, >= 1.3.3)
12
+ tilt (1.4.1)
13
+
14
+ PLATFORMS
15
+ ruby
16
+
17
+ DEPENDENCIES
18
+ rack (~> 1.0)
19
+ sinatra (~> 1.3)
@@ -0,0 +1,4 @@
1
+ get '/widgets' do
2
+ headers 'Content-Type' => 'application/json; charset=utf-8'
3
+ [200, '[]']
4
+ end
@@ -0,0 +1,29 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ require 'sinatra'
4
+
5
+ Signal.trap('HUP') do
6
+ puts 'I got a SIGHUP'
7
+ end
8
+
9
+ Signal.trap('USR2') do
10
+ puts 'I got a SIGUSR2'
11
+ end
12
+
13
+ app_dir = File.expand_path('../app', __FILE__)
14
+
15
+ Dir.glob(File.join(app_dir, '**', '*')).each do |f|
16
+ require f
17
+ end
18
+
19
+ set :environment, :development
20
+ set :run, false
21
+ set :raise_errors, true
22
+
23
+ if ENV['DIE_DIE_DIE']
24
+ puts "I am dying as requested by ENV['DIE_DIE_DIE']"
25
+ exit(42)
26
+ else
27
+ puts "I am up and running"
28
+ run Sinatra::Application
29
+ end
data/lib/cmdb.rb ADDED
@@ -0,0 +1,2 @@
1
+ module CMDB
2
+ end
metadata ADDED
@@ -0,0 +1,118 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cmdb
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - RightScale
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-02-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: listen
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: diplomat
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.15'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.15'
41
+ - !ruby/object:Gem::Dependency
42
+ name: trollop
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.10'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.10'
69
+ description: Reads CMDB variables from files, Consul, and elsewhere.
70
+ email:
71
+ - rubygems@rightscale.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - ".gitignore"
77
+ - ".rspec"
78
+ - ".travis.yml"
79
+ - CHANGELOG.md
80
+ - Gemfile
81
+ - Gemfile.lock
82
+ - README.md
83
+ - Rakefile
84
+ - TODO.md
85
+ - bin/console
86
+ - bin/setup
87
+ - cmdb.gemspec
88
+ - fixtures/Gemfile
89
+ - fixtures/Gemfile.lock
90
+ - fixtures/app/widgets.rb
91
+ - fixtures/config.ru
92
+ - lib/cmdb.rb
93
+ homepage: https://github.com/rightscale/cmdb
94
+ licenses:
95
+ - MIT
96
+ metadata: {}
97
+ post_install_message:
98
+ rdoc_options: []
99
+ require_paths:
100
+ - lib
101
+ required_ruby_version: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: '2.0'
106
+ required_rubygems_version: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ requirements: []
112
+ rubyforge_project:
113
+ rubygems_version: 2.4.5
114
+ signing_key:
115
+ specification_version: 4
116
+ summary: Command-line tool for configuration manegement databases
117
+ test_files: []
118
+ has_rdoc: