dockershell 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,29 @@
1
+ #! /usr/bin/env ruby
2
+ require 'puppet'
3
+ require 'fileutils'
4
+
5
+ Puppet.initialize_settings
6
+
7
+ certname = ARGV[0] || exit(1)
8
+ course = ARGV[1]
9
+ environment = certname.split('.').first.gsub('-','_')
10
+
11
+ known_courses = [
12
+ 'autoloading', 'classes', 'cli_intro', 'code', 'facter_intro', 'hiera',
13
+ 'hiera_intro', 'infrastructure', 'inheritance', 'module', 'parser',
14
+ 'puppet_lint', 'relationships', 'resources', 'smoke_test', 'testing',
15
+ 'troubleshooting', 'unit_test', 'validating', 'get_hiera1', 'get_hiera2',
16
+ 'get_hiera3', 'get_hiera4', 'get_hiera5', 'exec',
17
+ ]
18
+ course = 'default' unless known_courses.include? course
19
+
20
+ path = "#{Puppet.settings[:environmentpath]}/#{environment}"
21
+ FileUtils.mkdir_p "#{path}/modules"
22
+ FileUtils.mkdir_p "#{path}/manifests"
23
+
24
+ # Create site manifest with include course_selector::course::${course}
25
+ File.open("#{path}/manifests/site.pp", 'w') { |file|
26
+ file.write "node default {\n"
27
+ file.write " include course_selector::course::#{course}\n"
28
+ file.write "}\n"
29
+ }
@@ -0,0 +1,39 @@
1
+ #! /usr/bin/env ruby
2
+ require 'puppet'
3
+ require 'puppetclassify'
4
+ require 'socket'
5
+ require 'fileutils'
6
+
7
+ Puppet.initialize_settings
8
+
9
+ certname = ARGV[0] || exit(1)
10
+ groups = ARGV[1] # TODO: future enhancement?
11
+ environment = certname.split('.').first.gsub('-','_')
12
+ master = Socket.gethostbyname(Socket.gethostname).first
13
+ auth_info = {
14
+ 'ca_certificate_path' => Puppet.settings[:cacert],
15
+ 'certificate_path' => Puppet.settings[:hostcert],
16
+ 'private_key_path' => Puppet.settings[:hostprivkey],
17
+ }
18
+
19
+ FileUtils.mkdir_p "#{Puppet.settings[:environmentpath]}/#{environment}/modules"
20
+ FileUtils.mkdir_p "#{Puppet.settings[:environmentpath]}/#{environment}/manifests"
21
+
22
+ classifier = PuppetClassify.new("http://#{master}:4433/classifier-api", auth_info)
23
+ group_hash = {
24
+ 'name' => certname,
25
+ 'environment' => environment,
26
+ 'environment_trumps' => true,
27
+ 'parent' => '00000000-0000-4000-8000-000000000000',
28
+ 'classes' => {},
29
+ 'rule' => ['or', ['=', 'name', certname]],
30
+ }
31
+
32
+ begin
33
+ classifier.groups.create_group(group_hash)
34
+ rescue => e
35
+ puts "Could not create node group #{certname}: #{e.message}"
36
+ exit 1
37
+ end
38
+
39
+ puts "Created node group #{certname} assigned to environment #{environment}"
data/scripts/pe_purge ADDED
@@ -0,0 +1,37 @@
1
+ #! /usr/bin/env ruby
2
+ require 'puppet'
3
+ require 'puppetclassify'
4
+ require 'socket'
5
+ require 'fileutils'
6
+
7
+ Puppet.initialize_settings
8
+
9
+ certname = ARGV[0] || exit(1)
10
+ groups = ARGV[1] # TODO: future enhancement?
11
+ environment = certname.split('.').first.gsub('-','_')
12
+ master = Socket.gethostbyname(Socket.gethostname).first
13
+ auth_info = {
14
+ 'ca_certificate_path' => Puppet.settings[:cacert],
15
+ 'certificate_path' => Puppet.settings[:hostcert],
16
+ 'private_key_path' => Puppet.settings[:hostprivkey],
17
+ }
18
+
19
+ classifier = PuppetClassify.new("http://#{master}:4433/classifier-api", auth_info)
20
+
21
+ begin
22
+ group_id = classifier.groups.get_group_id(certname)
23
+ classifier.groups.delete_group(group_id)
24
+ rescue => e
25
+ puts "Error removing node group #{certname}: #{e.message}"
26
+ end
27
+
28
+ begin
29
+ system('puppet', 'cert', 'clean', certname)
30
+ system('puppet', 'node', 'deactivate', certname)
31
+ rescue => e
32
+ puts "Error cleaning certificate #{certname}: #{e.message}"
33
+ end
34
+
35
+ FileUtils.rm_rf "#{Puppet.settings[:environmentpath]}/#{environment}"
36
+
37
+ puts "Removed node group #{certname} and environment #{environment}"
metadata ADDED
@@ -0,0 +1,69 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dockershell
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Ben Ford
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-03-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: facter
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: |2
28
+ Dockershell can be used as a user login shell, or simply run on the CLI. It
29
+ will stand up a Docker container and then drop the user into a bash shell
30
+ on the container. It's highly configurable and supports multiple profiles.
31
+ email: binford2k@gmail.com
32
+ executables:
33
+ - dockershell
34
+ extensions: []
35
+ extra_rdoc_files: []
36
+ files:
37
+ - README.md
38
+ - bin/dockershell
39
+ - lib/dockershell/wordgen.rb
40
+ - lib/dockershell.rb
41
+ - resources/places.txt
42
+ - scripts/course_selector
43
+ - scripts/pe_classify
44
+ - scripts/pe_purge
45
+ homepage: https://github.com/binford2k/dockershell/
46
+ licenses:
47
+ - Apache-2.0
48
+ metadata: {}
49
+ post_install_message:
50
+ rdoc_options: []
51
+ require_paths:
52
+ - lib
53
+ required_ruby_version: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ required_rubygems_version: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ requirements: []
64
+ rubyforge_project:
65
+ rubygems_version: 2.0.14.1
66
+ signing_key:
67
+ specification_version: 4
68
+ summary: Provides a user shell backed by a Docker container.
69
+ test_files: []