puppet_ec2_enc 0.1.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 66de548d7b6c1341448ca7ef411fba0eb1db1838
4
- data.tar.gz: acc3e3b4f17963c6905e17182d7762144166a330
3
+ metadata.gz: 60913d10ff8ae2d089a94e77315856b39e46daa9
4
+ data.tar.gz: 81246e7da702eee2d3a07c376c24bc109c669a0b
5
5
  SHA512:
6
- metadata.gz: 304633b6109bbaf756d036e989dfc65be71991ff9c5b68674faedb8467065fee2b57a8067231e2fee3528b2d5a3ad4f4fd7d81a4cc2e70385f42ff24f5784fd2
7
- data.tar.gz: 98f1a016479a9bc587a8df55cad1a72445799a6f05ed09b54acbfa588327a444b73052a1d729d6659424f8dcbd165c90d4c72635f9154dd252f7c66cae5b97a7
6
+ metadata.gz: 0aeda2ed057c932380f3270f87ed6607d63fe796f60d4947fc70777ff369fec9e9628ef647d11f6c1ab6fcbad8ac59021d57fa10aaad0918cce45d4f1a0022d3
7
+ data.tar.gz: d51685be014bc1f9629f0477acfc4cae0193b6b35037008ae8e2baf05e6ff54ee708f62854d08f25a5b16af7350e8c001868b4ac49f0394eded700da9f1229e4
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ /scratch/
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'puppet_ec2_enc'
4
+
5
+ raise ArgumentError.new(
6
+ 'Usage: puppet_ec2_enc <node>'
7
+ ) unless ARGV.count == 1
8
+
9
+ node = ARGV[0]
10
+
11
+ puts PuppetEc2Enc.generate(node)
@@ -1,13 +1,14 @@
1
1
  require "puppet_ec2_enc/version"
2
+ require "puppet_ec2_enc/instance"
2
3
  require "puppet_ec2_enc/metadata"
3
4
  require "puppet_ec2_enc/ec2tags"
4
5
  require "puppet_ec2_enc/enc"
5
6
 
6
7
  module PuppetEc2Enc
7
- def self.generate
8
- instance_id = PuppetEc2Enc::Metadata.instance_id
9
- region = PuppetEc2Enc::Metadata.region
10
- ec2tags = PuppetEc2Enc::EC2Tags.new(instance_id: instance_id, region: region)
8
+ def self.generate(fqdn)
9
+ client = PuppetEc2Enc::Instance.client
10
+ instance = client.by_private_dns(fqdn)
11
+ ec2tags = PuppetEc2Enc::EC2Tags.new(instance: instance)
11
12
  tags = ec2tags.tags
12
13
  role = tags.fetch('puppet_role')
13
14
  environment = tags.fetch('puppet_env')
@@ -2,12 +2,10 @@ require 'aws-sdk'
2
2
 
3
3
  module PuppetEc2Enc
4
4
  class EC2Tags
5
- attr_accessor :instance_id, :region, :ec2
5
+ attr_accessor :instance
6
6
 
7
7
  def initialize(opts = {})
8
- @instance_id = opts[:instance_id] if opts[:instance_id]
9
- @region = opts[:region] if opts[:region]
10
- @ec2 = Aws::EC2::Resource.new(region: @region)
8
+ @instance = opts[:instance] if opts[:instance]
11
9
  end
12
10
 
13
11
  def tags
@@ -17,11 +15,5 @@ module PuppetEc2Enc
17
15
  end
18
16
  tags
19
17
  end
20
-
21
- private
22
-
23
- def instance
24
- ec2.instance(instance_id)
25
- end
26
18
  end
27
19
  end
@@ -0,0 +1,45 @@
1
+ module PuppetEc2Enc
2
+ class Instance
3
+ attr_accessor :ec2
4
+
5
+ def initialize
6
+ @ec2 = Aws::EC2::Client.new
7
+ end
8
+
9
+ def self.client
10
+ self.new
11
+ end
12
+
13
+ def by_private_dns(fqdn)
14
+ filter_hash = {
15
+ name: 'private-dns-name',
16
+ values: [fqdn]
17
+ }
18
+
19
+ reservations = filtered_search(filter_hash)
20
+
21
+ raise RuntimeError.new(
22
+ "Did not find EC2 instance named #{fqdn}!"
23
+ ) if reservations.nil?
24
+
25
+ raise RuntimeError.new(
26
+ "Somehow found more than one EC2 instance named #{fqdn}!"
27
+ ) if reservations.count > 1
28
+
29
+ return reservations[0].instances[0]
30
+ end
31
+
32
+ private
33
+
34
+ def filtered_search(filter_hash = {})
35
+ result = ec2.describe_instances({
36
+ filters: [
37
+ filter_hash
38
+ ]
39
+ })
40
+
41
+ return nil if result.reservations.count == 0
42
+ return result.reservations
43
+ end
44
+ end
45
+ end
@@ -1,3 +1,3 @@
1
1
  module PuppetEc2Enc
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.2"
3
3
  end
@@ -9,8 +9,8 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Eric Olsen"]
10
10
  spec.email = ["eric@ericolsen.net"]
11
11
 
12
- spec.summary = %q{ENC for Standalone Puppet Nodes Running on EC2}
13
- spec.description = %q{ENC for Standalone Puppet Nodes Running on EC2}
12
+ spec.summary = %q{ENC for Puppet Running on EC2}
13
+ spec.description = %q{ENC for Puppet Running on EC2}
14
14
  spec.homepage = "https://github.com/eoly/puppet_ec2_enc"
15
15
 
16
16
  # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet_ec2_enc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Olsen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-12-10 00:00:00.000000000 Z
11
+ date: 2017-04-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,11 +66,11 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '2'
69
- description: ENC for Standalone Puppet Nodes Running on EC2
69
+ description: ENC for Puppet Running on EC2
70
70
  email:
71
71
  - eric@ericolsen.net
72
72
  executables:
73
- - puppet_ec2_enc.rb
73
+ - puppet_ec2_enc
74
74
  extensions: []
75
75
  extra_rdoc_files: []
76
76
  files:
@@ -80,10 +80,11 @@ files:
80
80
  - Rakefile
81
81
  - bin/console
82
82
  - bin/setup
83
- - exe/puppet_ec2_enc.rb
83
+ - exe/puppet_ec2_enc
84
84
  - lib/puppet_ec2_enc.rb
85
85
  - lib/puppet_ec2_enc/ec2tags.rb
86
86
  - lib/puppet_ec2_enc/enc.rb
87
+ - lib/puppet_ec2_enc/instance.rb
87
88
  - lib/puppet_ec2_enc/metadata.rb
88
89
  - lib/puppet_ec2_enc/version.rb
89
90
  - puppet_ec2_enc.gemspec
@@ -107,8 +108,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
108
  version: '0'
108
109
  requirements: []
109
110
  rubyforge_project:
110
- rubygems_version: 2.5.1
111
+ rubygems_version: 2.5.2
111
112
  signing_key:
112
113
  specification_version: 4
113
- summary: ENC for Standalone Puppet Nodes Running on EC2
114
+ summary: ENC for Puppet Running on EC2
114
115
  test_files: []
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'puppet_ec2_enc'
4
-
5
- puts PuppetEc2Enc.generate