gitlab_config 0.1.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/README.md +1 -36
- data/gitlab_config.gemspec +2 -2
- data/lib/gitlab_config/aws/iam_role.rb +37 -0
- data/lib/gitlab_config/configuration.rb +7 -1
- data/lib/gitlab_config/source/local.rb +12 -0
- data/lib/gitlab_config/source/s3.rb +10 -1
- data/lib/gitlab_config/version.rb +1 -1
- data/lib/gitlab_config.rb +18 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 72d6d03d55ccd88f54eadf815b61659bdad65fb6
|
4
|
+
data.tar.gz: 560d18b385a93223df9f96de1f4e05f0690a5c4e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 288d9ff7481ea99c08e7e1ccabaf90c296cf4d527956becc7a33635d2fe64d59a1ca62f7b15052ddc40b860746e2aa2cc2f5fa07bc90d311b0c3488c7be314b0
|
7
|
+
data.tar.gz: 87901f2249b6ba9820c047adcce112c7b581acb7fc8b4acc50e645dd09d08fe845fcc233be084cd794d16fed7ab2b1d8b2e810eaef83293e5cb05bfe5e40974e
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,36 +1 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/gitlab_config`. To experiment with that code, run `bin/console` for an interactive prompt.
|
4
|
-
|
5
|
-
TODO: Delete this and the text above, and describe your gem
|
6
|
-
|
7
|
-
## Installation
|
8
|
-
|
9
|
-
Add this line to your application's Gemfile:
|
10
|
-
|
11
|
-
```ruby
|
12
|
-
gem 'gitlab_config'
|
13
|
-
```
|
14
|
-
|
15
|
-
And then execute:
|
16
|
-
|
17
|
-
$ bundle
|
18
|
-
|
19
|
-
Or install it yourself as:
|
20
|
-
|
21
|
-
$ gem install gitlab_config
|
22
|
-
|
23
|
-
## Usage
|
24
|
-
|
25
|
-
TODO: Write usage instructions here
|
26
|
-
|
27
|
-
## Development
|
28
|
-
|
29
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
30
|
-
|
31
|
-
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
32
|
-
|
33
|
-
## Contributing
|
34
|
-
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/gitlab_config. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
36
|
-
|
1
|
+
# Gitlab Config
|
data/gitlab_config.gemspec
CHANGED
@@ -4,14 +4,14 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'gitlab_config/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'gitlab_config'
|
8
8
|
spec.version = GitlabConfig::VERSION
|
9
9
|
spec.authors = ["Andrew Tarry"]
|
10
10
|
spec.email = ["andrew@andrewtarry.com"]
|
11
11
|
|
12
12
|
spec.summary = %q{Load Gitlab configuration files from anywhere}
|
13
13
|
spec.description = %q{The Gitlab configuration gem can be loaded in the gitlab.rb configuration file to allow dynamic properties to be loaded}
|
14
|
-
|
14
|
+
spec.homepage = 'https://github.com/bjss/gitlab_config_gem'
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
17
17
|
spec.require_paths = ["lib"]
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
module GitlabConfig
|
5
|
+
|
6
|
+
class IamRole
|
7
|
+
|
8
|
+
AWS_URL = 'http://169.254.169.254/latest/meta-data/iam/security-credentials'
|
9
|
+
|
10
|
+
def initialize(role)
|
11
|
+
@role = role
|
12
|
+
end
|
13
|
+
|
14
|
+
def key
|
15
|
+
get_credentials if @key.nil?
|
16
|
+
@key
|
17
|
+
end
|
18
|
+
|
19
|
+
def secret
|
20
|
+
get_credentials if @secret.nil?
|
21
|
+
@secret
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def get_credentials
|
27
|
+
uri = URI("#{AWS_URL}/#{@role}")
|
28
|
+
res = Net::HTTP.get_response(uri)
|
29
|
+
body = JSON.parse(res.body)
|
30
|
+
|
31
|
+
@key = body.fetch('AccessKeyId')
|
32
|
+
@secret = body.fethc('AccessKeyId')
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
|
-
require
|
1
|
+
require 'gitlab_config/source/s3'
|
2
|
+
require 'gitlab_config/source/local'
|
2
3
|
|
3
4
|
module GitlabConfig
|
4
5
|
|
@@ -10,10 +11,15 @@ module GitlabConfig
|
|
10
11
|
|
11
12
|
private
|
12
13
|
|
14
|
+
# Get the configuration class
|
13
15
|
def source(options)
|
14
16
|
case options.fetch(:source)
|
17
|
+
when :custom
|
18
|
+
options.fetch(:config_source)
|
15
19
|
when :s3
|
16
20
|
S3ConfigurationSource.new(options.fetch(:region), options.fetch(:key), options.fetch(:secret))
|
21
|
+
when :local
|
22
|
+
LocalSource.new
|
17
23
|
else
|
18
24
|
raise 'Configuration source not set'
|
19
25
|
end
|
@@ -1,16 +1,25 @@
|
|
1
1
|
require 'yaml'
|
2
|
+
require 'aws-sdk'
|
2
3
|
|
3
4
|
module GitlabConfig
|
5
|
+
|
6
|
+
# Read the configuration from a file in an s3 bucket
|
7
|
+
#
|
4
8
|
class S3ConfigurationSource
|
5
9
|
|
10
|
+
attr_reader :region, :key, :secret
|
11
|
+
|
6
12
|
def initialize(region, key, secret)
|
7
13
|
@region, @key, @secret = region, key, secret
|
8
14
|
end
|
9
15
|
|
16
|
+
# Get configuration will download the file read it
|
10
17
|
def get_configuration(options)
|
11
|
-
download_path = "/tmp/#{file}"
|
18
|
+
download_path = "/tmp/#{options.fetch(:file)}"
|
19
|
+
|
12
20
|
object = Aws::S3::Object.new(options.fetch(:bucket), options.fetch(:file), client: client)
|
13
21
|
object.get(response_target: download_path)
|
22
|
+
|
14
23
|
YAML.load_file(download_path)
|
15
24
|
end
|
16
25
|
|
data/lib/gitlab_config.rb
CHANGED
@@ -1,8 +1,25 @@
|
|
1
|
-
require
|
1
|
+
require 'gitlab_config/version'
|
2
2
|
require 'gitlab_config/configuration'
|
3
|
+
require 'gitlab_config/aws/iam_role'
|
3
4
|
|
4
5
|
module GitlabConfig
|
5
6
|
def self.load_configuration(options)
|
7
|
+
if options.fetch(:source) == :s3 and options.has_key?(:iam_role)
|
8
|
+
options = fetch_iam_parameters(options)
|
9
|
+
end
|
10
|
+
|
6
11
|
yield Configuration.new.get_configuration(options)
|
7
12
|
end
|
13
|
+
|
14
|
+
def self.fetch_iam_parameters(options)
|
15
|
+
key = options.fetch(:key, nil)
|
16
|
+
secret = options.fetch(:secret, nil)
|
17
|
+
|
18
|
+
if key.nil? && secret.nil?
|
19
|
+
iam = IamRole.new(options.fetch(:iam_role))
|
20
|
+
options[:key] = iam.key
|
21
|
+
options[:secret] = iam.secret
|
22
|
+
end
|
23
|
+
options
|
24
|
+
end
|
8
25
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitlab_config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Tarry
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|
@@ -84,10 +84,12 @@ files:
|
|
84
84
|
- Rakefile
|
85
85
|
- gitlab_config.gemspec
|
86
86
|
- lib/gitlab_config.rb
|
87
|
+
- lib/gitlab_config/aws/iam_role.rb
|
87
88
|
- lib/gitlab_config/configuration.rb
|
89
|
+
- lib/gitlab_config/source/local.rb
|
88
90
|
- lib/gitlab_config/source/s3.rb
|
89
91
|
- lib/gitlab_config/version.rb
|
90
|
-
homepage:
|
92
|
+
homepage: https://github.com/bjss/gitlab_config_gem
|
91
93
|
licenses: []
|
92
94
|
metadata: {}
|
93
95
|
post_install_message:
|