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.
- checksums.yaml +7 -0
- data/README.md +164 -0
- data/bin/dockershell +65 -0
- data/lib/dockershell/wordgen.rb +4 -0
- data/lib/dockershell.rb +133 -0
- data/resources/places.txt +3101 -0
- data/scripts/course_selector +29 -0
- data/scripts/pe_classify +39 -0
- data/scripts/pe_purge +37 -0
- metadata +69 -0
@@ -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
|
+
}
|
data/scripts/pe_classify
ADDED
@@ -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: []
|