beaker-puppet_install_helper 0.2.1 → 0.3.0

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: ec929df57e9e89b0437647e33b6b5de9c39e05c5
4
- data.tar.gz: af13f6d801db9af6f1e4331301aefb4a536a9cf4
3
+ metadata.gz: 17e6a51cd929ad47b6650028e546f4e0e5708111
4
+ data.tar.gz: b782f88f97d51b289c7198683e0ed3c7829e96a2
5
5
  SHA512:
6
- metadata.gz: 34c259057ac90949d402553098a775ff5845f68241684a4599f27b484da56f18ad864a9fbb2434e60b99cf5fd11e9126cc03c75c8500e950439de719e62bcafe
7
- data.tar.gz: 3f71c81936136c1d16a8649048f264a6db35204e585cfd20b9ea97a1a831464c30c9f9c9dece882863550f9619e4abfc5fced19285a2ce43524bb938cc2c1795
6
+ metadata.gz: 8d1fccdeb2a26047783bb3d6be89788195aefe060520edaeca7bddfd8b32e19e1bfed1f5664a676267a1d8e5d504aa30661f370a50fc4a8b2498aa8efcb25210
7
+ data.tar.gz: e357f54eca20d2e932d7c8664db898b0a0897eeecfbde0eab44fbb9897c4d7b556de8194a02915d0eef54b7dedbffc276028f3bbe517427ef778b83420fb4cea
data/.gitignore CHANGED
@@ -1,3 +1,5 @@
1
1
  Gemfile.lock
2
+ Gemfile.local
2
3
  .bundle
3
4
  *.swp
5
+ .idea
@@ -0,0 +1,7 @@
1
+ ### Contributing and adding features
2
+
3
+ This package is frozen on 0.x and guaranteed to disappear in the future, so contributing features is not something you probably want to spend time on.
4
+
5
+ On the other hand, it exists to fill a void in beaker until such time as beaker fills it, so any bugfixes contributed via a github pull request are welcome.
6
+
7
+ Discussion is available in #puppet-dev on Freenode
data/Gemfile CHANGED
@@ -1,3 +1,8 @@
1
1
  source ENV['GEM_SOURCE'] || "https://rubygems.org"
2
2
 
3
3
  gemspec
4
+
5
+ if File.exists? "#{__FILE__}.local"
6
+ eval(File.read("#{__FILE__}.local"), binding)
7
+ end
8
+
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  This gem is simply an abstraction for the various ways that we install puppet from the `spec/spec_helper_acceptance.rb` files across the modules.
4
4
 
5
+ ### `run_puppet_install_helper`
6
+
5
7
  The way to use this is to declare either `run_puppet_install_helper()` or `run_puppet_install_helper_on(hosts)` and set environment variables `PUPPET_VERSION` and/or `PUPPET_INSTALL_TYPE` in the following combinations to have puppet installed on the desired hosts:
6
8
 
7
9
  - `PUPPET_INSTALL_TYPE` is unset: it will look at the default node's type (ie, `default.is_pe?` and choose either foss or pe methods below.
@@ -13,5 +15,18 @@ The way to use this is to declare either `run_puppet_install_helper()` or `run_p
13
15
 
14
16
  The best way is explicitly set `PUPPET_INSTALL_TYPE` and `PUPPET_VERSION` to what you want. It'll probably do what you expect.
15
17
 
18
+ ### `install_ca_certs`
19
+
20
+ Install Certificate Authority Certs on Windows and OSX for Geotrust, User Trust Network, and Equifax
21
+ On Windows it currently is limited to hosts that use cygwin
22
+
23
+ ### `install_ca_certs_on`
24
+
25
+ Install certs on a given host(s)
26
+
27
+ ### Support
28
+
29
+ No support is supplied or implied. Use at your own risk.
30
+
16
31
  ### TODO
17
32
  - Add support for ci-ready builds
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "beaker-puppet_install_helper"
3
- s.version = '0.2.1'
3
+ s.version = '0.3.0'
4
4
  s.authors = ["Puppetlabs"]
5
5
  s.email = ["hunter@puppetlabs.com"]
6
6
  s.homepage = "https://github.com/puppetlabs/beaker-puppet_install_helper"
@@ -0,0 +1,129 @@
1
+ require 'beaker'
2
+ require 'beaker/dsl/helpers/host_helpers'
3
+
4
+ module Beaker::CaCertHelper
5
+
6
+ def install_ca_certs
7
+ install_ca_certs_on(hosts)
8
+ end
9
+
10
+
11
+ ##
12
+ # Install certs on Windows and OSX Hosts
13
+ #
14
+ # @param Array<Host>
15
+ #
16
+ ##
17
+ def install_ca_certs_on(hosts)
18
+ Array[hosts].each do |host|
19
+ get_cert_hash.each do |cert_name, ca|
20
+ create_cert_on_host(host, cert_name, ca)
21
+ if host['platform'] =~ /windows/i
22
+ add_windows_cert host, cert_name
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+ ##
29
+ # create the remote file and ensure proper rights
30
+ #
31
+ def create_cert_on_host(host, cert_name, ca)
32
+ create_remote_file(host, cert_name, ca)
33
+ on host, "chmod 644 #{cert_name}"
34
+ end
35
+
36
+ ##
37
+ # Install cert, assumes cygwin currently
38
+ ##
39
+ def add_windows_cert(host, ca_filename)
40
+ on host, "cmd /c certutil -v -addstore Root `cygpath -w #{ca_filename}`"
41
+ end
42
+
43
+ ##
44
+ # Returns a hash of certificates where the Key is the pem cert name, and the value is the certificate
45
+ # @return Hash<String,String>
46
+ ##
47
+ def get_cert_hash
48
+ certs = {}
49
+ certs['geotrustglobal.pem'] = <<-EOM
50
+ -----BEGIN CERTIFICATE-----
51
+ MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT
52
+ MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i
53
+ YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG
54
+ EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg
55
+ R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9
56
+ 9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq
57
+ fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv
58
+ iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU
59
+ 1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+
60
+ bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW
61
+ MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA
62
+ ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l
63
+ uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn
64
+ Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS
65
+ tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF
66
+ PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un
67
+ hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV
68
+ 5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw==
69
+ -----END CERTIFICATE-----
70
+ EOM
71
+
72
+ certs['usertrust-network.pem'] = <<-EOM
73
+ -----BEGIN CERTIFICATE-----
74
+ MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB
75
+ lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug
76
+ Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho
77
+ dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt
78
+ SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG
79
+ A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe
80
+ MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v
81
+ d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh
82
+ cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn
83
+ 0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ
84
+ M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a
85
+ MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd
86
+ oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI
87
+ DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy
88
+ oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD
89
+ VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0
90
+ dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy
91
+ bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF
92
+ BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
93
+ //bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli
94
+ CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE
95
+ CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t
96
+ 3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS
97
+ KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA==
98
+ -----END CERTIFICATE-----
99
+ EOM
100
+
101
+ certs['equifax.pem'] = <<-EOM
102
+ -----BEGIN CERTIFICATE-----
103
+ MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV
104
+ UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy
105
+ dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1
106
+ MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx
107
+ dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B
108
+ AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f
109
+ BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A
110
+ cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC
111
+ AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ
112
+ MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm
113
+ aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw
114
+ ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj
115
+ IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF
116
+ MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA
117
+ A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y
118
+ 7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh
119
+ 1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4
120
+ -----END CERTIFICATE-----
121
+ EOM
122
+
123
+ certs
124
+ end
125
+
126
+
127
+ end
128
+
129
+ include Beaker::CaCertHelper
@@ -1,4 +1,5 @@
1
1
  require 'beaker'
2
+ require 'beaker/ca_cert_helper'
2
3
 
3
4
  module Beaker::PuppetInstallHelper
4
5
  def run_puppet_install_helper(type_arg=find_install_type,version=ENV["PUPPET_VERSION"])
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'beaker::ca_cert_helper' do
4
+ let :subject do
5
+ Class.new { include Beaker::CaCertHelper }
6
+ end
7
+
8
+
9
+ describe 'install_ca_certs_on' do
10
+ before :each do
11
+ allow(subject).to receive(:get_cert_hash).and_return(
12
+ {'geotrustglobal.pem' => 'my cert string',
13
+ 'usertrust-network.pem' => 'my user trust cert'})
14
+ end
15
+
16
+ it "windows 2003 node" do
17
+ w2k3 = {"platform" => 'windows-2003r2-64', 'distmoduledir' => '/dne', 'hieraconf' => '/dne'}
18
+
19
+ expect(subject).to receive(:add_windows_cert).with(w2k3, 'geotrustglobal.pem')
20
+ expect(subject).to receive(:create_cert_on_host).with(w2k3, 'geotrustglobal.pem', 'my cert string')
21
+ expect(subject).to receive(:add_windows_cert).with(w2k3, 'usertrust-network.pem')
22
+ expect(subject).to receive(:create_cert_on_host).with(w2k3, 'usertrust-network.pem', 'my user trust cert')
23
+ subject.install_ca_certs_on w2k3
24
+ end
25
+ end
26
+
27
+ describe 'add_windows_cert' do
28
+ it {
29
+ host = {"platform" => 'windows-2003r2-64', 'distmoduledir' => '/dne', 'hieraconf' => '/dne'}
30
+ expect(subject).to receive(:on).with(host, 'cmd /c certutil -v -addstore Root `cygpath -w geotrustglobal.pem`')
31
+ subject.add_windows_cert host, 'geotrustglobal.pem'
32
+ }
33
+ end
34
+
35
+ describe 'get_cert_hash' do
36
+ it 'should contain 3 certs' do
37
+ cert_hash = subject.get_cert_hash
38
+ expect(cert_hash.length).to equal(3)
39
+ expect(cert_hash.class).to eq(Hash)
40
+ end
41
+ end
42
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beaker-puppet_install_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppetlabs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-30 00:00:00.000000000 Z
11
+ date: 2015-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -47,12 +47,15 @@ extra_rdoc_files: []
47
47
  files:
48
48
  - ".gitignore"
49
49
  - ".travis.yml"
50
+ - CONTRIBUTING.md
50
51
  - Gemfile
51
52
  - LICENSE
52
53
  - README.md
53
54
  - beaker-puppet_install_helper.gemspec
55
+ - lib/beaker/ca_cert_helper.rb
54
56
  - lib/beaker/puppet_install_helper.rb
55
57
  - spec/spec_helper.rb
58
+ - spec/unit/beaker/ca_cert_helper_spec.rb
56
59
  - spec/unit/beaker/puppet_install_helper_spec.rb
57
60
  homepage: https://github.com/puppetlabs/beaker-puppet_install_helper
58
61
  licenses:
@@ -80,4 +83,5 @@ specification_version: 4
80
83
  summary: Puppet install helper for Beaker
81
84
  test_files:
82
85
  - spec/spec_helper.rb
86
+ - spec/unit/beaker/ca_cert_helper_spec.rb
83
87
  - spec/unit/beaker/puppet_install_helper_spec.rb