gogetit 0.11.0 → 0.12.0
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 +4 -4
- data/gogetit.gemspec +1 -0
- data/lib/gogetit/config.rb +2 -1
- data/lib/gogetit/util.rb +0 -13
- data/lib/gogetit/version.rb +1 -1
- data/lib/providers/lxd.rb +64 -4
- data/lib/sample_conf/gogetit.yml +17 -8
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5df3c7e2708fbc2aab8624208af8e66b1799d938
|
4
|
+
data.tar.gz: faa1cd7100db42852572c149576c53b768d69817
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db901044d47f43dc044e353c2995e61b63b4c486d1ed7b0f881ecb33e2c10515e2378046a1ecebf7c68803760b89c392e7d7e15ac8fad83bff9ced69664f0be1
|
7
|
+
data.tar.gz: 3a570bd71ce4d20413dfd21f2c15bc0e18127a3b0cd8582400bfcd8346f4750b746673789b8612dd26d22e44a29ea2f3a057de65cdc0317d25a99c9972cc2fd8
|
data/gogetit.gemspec
CHANGED
data/lib/gogetit/config.rb
CHANGED
@@ -2,6 +2,7 @@ require 'yaml'
|
|
2
2
|
require 'logger'
|
3
3
|
require 'gogetit/util'
|
4
4
|
require 'gogetit/multilogger'
|
5
|
+
require 'hashie'
|
5
6
|
|
6
7
|
module Gogetit
|
7
8
|
module Config
|
@@ -60,6 +61,6 @@ module Gogetit
|
|
60
61
|
FileUtils.cp(src, dst)
|
61
62
|
abort('Please define default configuration for GoGetIt at ~/.gogetit/gogetit.yml.')
|
62
63
|
end
|
63
|
-
config.merge!(symbolize_keys
|
64
|
+
config.merge!(Hashie.symbolize_keys YAML.load_file(conf_file))
|
64
65
|
end
|
65
66
|
end
|
data/lib/gogetit/util.rb
CHANGED
@@ -144,19 +144,6 @@ module Gogetit
|
|
144
144
|
end
|
145
145
|
end
|
146
146
|
|
147
|
-
# taken from https://gist.github.com/andrewpcone/11359798
|
148
|
-
def symbolize_keys(thing)
|
149
|
-
case thing
|
150
|
-
when Array
|
151
|
-
thing.map{|v| symbolize_keys(v)}
|
152
|
-
when Hash
|
153
|
-
inj = thing.inject({}) {|h, (k,v)| h[k] = symbolize_keys(v); h}
|
154
|
-
inj.symbolize_keys
|
155
|
-
else
|
156
|
-
thing
|
157
|
-
end
|
158
|
-
end
|
159
|
-
|
160
147
|
def wait_until_available(ip_or_fqdn, distro_name, logger)
|
161
148
|
logger.info("Calling <#{__method__.to_s}>")
|
162
149
|
until ping_available?(ip_or_fqdn, logger)
|
data/lib/gogetit/version.rb
CHANGED
data/lib/providers/lxd.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'hyperkit'
|
2
2
|
require 'gogetit/util'
|
3
3
|
require 'yaml'
|
4
|
+
require 'hashie'
|
4
5
|
|
5
6
|
module Gogetit
|
6
7
|
class GogetLXD
|
@@ -77,12 +78,24 @@ module Gogetit
|
|
77
78
|
args[:config][:'user.user-data']['package_update'] = false
|
78
79
|
args[:config][:'user.user-data']['package_upgrade'] = false
|
79
80
|
|
81
|
+
generate_cloud_init_config(config, args)
|
82
|
+
|
83
|
+
args[:config][:"user.user-data"] = \
|
84
|
+
"#cloud-config\n" + YAML.dump(args[:config][:"user.user-data"])[4..-1]
|
85
|
+
|
86
|
+
return args
|
87
|
+
end
|
88
|
+
|
89
|
+
def generate_cloud_init_config(config, args)
|
90
|
+
logger.info("Calling <#{__method__.to_s}>")
|
80
91
|
# To add truested root CA certificates
|
81
|
-
|
92
|
+
# https://cloudinit.readthedocs.io/en/latest/topics/examples.html
|
93
|
+
# #configure-an-instances-trusted-ca-certificates
|
94
|
+
if config[:cloud_init] && config[:cloud_init][:ca_certs]
|
82
95
|
args[:config][:'user.user-data']['ca-certs'] = {}
|
83
96
|
certs = []
|
84
97
|
|
85
|
-
config[:
|
98
|
+
config[:cloud_init][:ca_certs].each do |ca|
|
86
99
|
content = get_http_content(ca)
|
87
100
|
certs.push(
|
88
101
|
/^-----BEGIN CERTIFICATE-----.*-/m.match(content).to_s
|
@@ -92,8 +105,55 @@ module Gogetit
|
|
92
105
|
args[:config][:'user.user-data']['ca-certs'] = { 'trusted' => certs }
|
93
106
|
end
|
94
107
|
|
95
|
-
|
96
|
-
|
108
|
+
# To get CA public key to be used for SSH authentication
|
109
|
+
# https://cloudinit.readthedocs.io/en/latest/topics/examples.html
|
110
|
+
# #writing-out-arbitrary-files
|
111
|
+
if config[:cloud_init] && config[:cloud_init][:ssh_ca_public_key]
|
112
|
+
args[:config][:'user.user-data']['write_files'] = []
|
113
|
+
content = get_http_content(config[:cloud_init][:ssh_ca_public_key][:key_url])
|
114
|
+
if content
|
115
|
+
file = {
|
116
|
+
'content' => content.chop!,
|
117
|
+
'path' => config[:cloud_init][:ssh_ca_public_key][:key_path],
|
118
|
+
'owner' => config[:cloud_init][:ssh_ca_public_key][:owner],
|
119
|
+
'permissions' => config[:cloud_init][:ssh_ca_public_key][:permissions]
|
120
|
+
}
|
121
|
+
args[:config][:'user.user-data']['write_files'].push(file)
|
122
|
+
args[:config][:'user.user-data']['bootcmd'] = []
|
123
|
+
args[:config][:'user.user-data']['bootcmd'].push(
|
124
|
+
"cloud-init-per once ssh-ca-pub-key \
|
125
|
+
echo \"TrustedUserCAKeys #{file['path']}\" >> /etc/ssh/sshd_config"
|
126
|
+
)
|
127
|
+
end
|
128
|
+
|
129
|
+
if config[:cloud_init][:ssh_ca_public_key][:revocation_url]
|
130
|
+
content = get_http_content(config[:cloud_init][:ssh_ca_public_key][:revocation_url])
|
131
|
+
if content
|
132
|
+
args[:config][:'user.user-data']['bootcmd'].push(
|
133
|
+
"cloud-init-per once download-key-revocation-list \
|
134
|
+
curl -o #{config[:cloud_init][:ssh_ca_public_key][:revocation_path]} \
|
135
|
+
#{config[:cloud_init][:ssh_ca_public_key][:revocation_url]}"
|
136
|
+
)
|
137
|
+
args[:config][:'user.user-data']['bootcmd'].push(
|
138
|
+
"cloud-init-per once ssh-user-key-revocation-list \
|
139
|
+
echo \"RevokedKeys #{config[:cloud_init][:ssh_ca_public_key][:revocation_path]}\" \
|
140
|
+
>> /etc/ssh/sshd_config"
|
141
|
+
)
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
# To add users
|
147
|
+
# https://cloudinit.readthedocs.io/en/latest/topics/examples.html
|
148
|
+
# #including-users-and-groups
|
149
|
+
if config[:cloud_init] && config[:cloud_init][:users]
|
150
|
+
args[:config][:'user.user-data']['users'] = []
|
151
|
+
args[:config][:'user.user-data']['users'].push('default')
|
152
|
+
|
153
|
+
config[:cloud_init][:users].each do |user|
|
154
|
+
args[:config][:'user.user-data']['users'].push(Hashie.stringify_keys user)
|
155
|
+
end
|
156
|
+
end
|
97
157
|
|
98
158
|
return args
|
99
159
|
end
|
data/lib/sample_conf/gogetit.yml
CHANGED
@@ -2,14 +2,23 @@ default:
|
|
2
2
|
user: ubuntu
|
3
3
|
root_bridge: $root_bridge
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
5
|
+
cloud_init:
|
6
|
+
users:
|
7
|
+
- name: usera
|
8
|
+
gecos: usera
|
9
|
+
sudo: ALL=(ALL) NOPASSWD:ALL
|
10
|
+
groups: users, admin
|
11
|
+
shell: /bin/bash
|
12
|
+
lock_passwd: true
|
13
|
+
ca_certs:
|
14
|
+
- http://pki.example.com/site/root_ca.crt
|
15
|
+
ssh_ca_public_key:
|
16
|
+
key_url: http://pki.example.com/site/ssh_ca.pub
|
17
|
+
key_path: /etc/ssh/ca.pub
|
18
|
+
revocation_url: http://pki.example.com/site/ssh-revoked-keys
|
19
|
+
revocation_path: /etc/ssh/ca.pub
|
20
|
+
owner: root:root
|
21
|
+
permissions: '0640'
|
13
22
|
|
14
23
|
maas:
|
15
24
|
key: K:E:Y
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gogetit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Don Draper
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-01-
|
11
|
+
date: 2018-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -178,6 +178,20 @@ dependencies:
|
|
178
178
|
- - "~>"
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: 0.19.0
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: hashie
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - "~>"
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: 3.5.5
|
188
|
+
type: :runtime
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - "~>"
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: 3.5.5
|
181
195
|
description: |2
|
182
196
|
This provides the ways that deal with mutiple virtualized and containerized solutions such as Libvirt(KVM) and LXD.
|
183
197
|
This uses MAAS for bare-metal provision(KVM machine using Libvirt), DHCP and DNS.
|