gogetit 0.14.0 → 0.15.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +7 -9
- data/lib/gogetit/cli.rb +45 -9
- data/lib/gogetit/util.rb +35 -5
- data/lib/gogetit/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1f33677b64fb94c2039ff7aca0675ff5166a5d10
|
4
|
+
data.tar.gz: b1984bee721e53fc456cee41dffb5b404521d45f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d7b7f4f94038df38b32ff160c966fa739c9f212bfb7d546112ed937f4c7266fbb2fdc1de89cbdc492ced11e8db364a2274331b56dc8b0ab7d1f12a384261f9a7
|
7
|
+
data.tar.gz: 054a08528c44b4aecab3b695d2f121df63718531a59b0a58e62cda617026b675a0e3b9a2454314f79a9c34251b4956bee8f5ac143cb68f08c94904cd67cb014d
|
data/README.md
CHANGED
@@ -60,8 +60,8 @@ gogetit create kvm01 -p libvirt
|
|
60
60
|
gogetit create kvm01 -p libvirt -i 192.168.10.10 10.0.0.2
|
61
61
|
|
62
62
|
# When specifying alias for LXD provider
|
63
|
-
gogetit create
|
64
|
-
gogetit create
|
63
|
+
gogetit create lxd01 -a centos7
|
64
|
+
gogetit create lxd02 -p lxd -a centos7
|
65
65
|
|
66
66
|
# When specifying distro for Libvirt provider
|
67
67
|
gogetit create kvm01 -p libvirt -d centos
|
@@ -74,20 +74,18 @@ gogetit deploy kvm01 -d centos
|
|
74
74
|
gogetit create lxd01 --no-maas -f lxd_without_maas.yml
|
75
75
|
gogetit create lxd01 --no-maas -f lxd_without_maas_vlans.yml
|
76
76
|
|
77
|
-
# to provision with a bare metal machine
|
78
|
-
# gogetit create kvm01 -p bare
|
79
|
-
|
80
77
|
gogetit destroy lxd01
|
81
78
|
|
82
79
|
# This feature is broken and might be deprecated in the future.
|
83
80
|
# gogetit rebuild kvm01
|
84
81
|
|
85
|
-
# to create a container bootstrapping as
|
82
|
+
# to create a container bootstrapping as server node
|
86
83
|
gogetit create chef01 --chef
|
84
|
+
gogetit destroy chef01 --chef
|
87
85
|
|
88
|
-
|
89
|
-
|
90
|
-
|
86
|
+
# to create a container bootstrapping as zero(local) node
|
87
|
+
gogetit create chef01 --zero
|
88
|
+
gogetit destroy chef01 --zero
|
91
89
|
|
92
90
|
|
93
91
|
# to destroy a container deleting corresponding chef node and client
|
data/lib/gogetit/cli.rb
CHANGED
@@ -61,6 +61,8 @@ module Gogetit
|
|
61
61
|
:desc => 'A distro name with its series for libvirt provider'
|
62
62
|
method_option :chef, :aliases => '-c', :type => :boolean, \
|
63
63
|
:default => false, :desc => 'Chef awareness'
|
64
|
+
method_option :zero, :aliases => '-z', :type => :boolean, \
|
65
|
+
:default => false, :desc => 'Chef Zero awareness'
|
64
66
|
method_option :vlans, :aliases => '-v', :type => :array, \
|
65
67
|
:desc => 'A list of VLAN IDs to connect to'
|
66
68
|
method_option :ipaddresses, :aliases => '-i', :type => :array, \
|
@@ -73,6 +75,9 @@ module Gogetit
|
|
73
75
|
abort("'vlans' and 'ipaddresses' can not be set together.") \
|
74
76
|
if options['vlans'] and options['ipaddresses']
|
75
77
|
|
78
|
+
abort("'chef' and 'zero' can not be set together.") \
|
79
|
+
if options['chef'] and options['zero']
|
80
|
+
|
76
81
|
abort("when 'no-maas', the network configuration have to be set by 'file'.") \
|
77
82
|
if options['no-maas'] and (options['vlans'] or options['ipaddresses'])
|
78
83
|
|
@@ -96,14 +101,22 @@ module Gogetit
|
|
96
101
|
|
97
102
|
# post-tasks
|
98
103
|
if options['chef']
|
99
|
-
|
100
|
-
update_databags(config
|
104
|
+
bootstrap_chef(name, options[:provider], config)
|
105
|
+
update_databags(config)
|
106
|
+
elsif options['zero']
|
107
|
+
knife_bootstrap_zero(name, options[:provider], config)
|
101
108
|
end
|
102
109
|
end
|
103
110
|
|
104
111
|
desc 'destroy NAME', 'Destroy either a container or KVM instance.'
|
105
|
-
method_option :chef, :
|
112
|
+
method_option :chef, :aliases => '-c', :type => :boolean, \
|
113
|
+
:default => false, :desc => 'Chef awareness'
|
114
|
+
method_option :zero, :aliases => '-z', :type => :boolean, \
|
115
|
+
:default => false, :desc => 'Chef Zero awareness'
|
106
116
|
def destroy(name)
|
117
|
+
abort("'chef' and 'zero' can not be set together.") \
|
118
|
+
if options['chef'] and options['zero']
|
119
|
+
|
107
120
|
provider = get_provider_of(name, providers)
|
108
121
|
if provider
|
109
122
|
case provider
|
@@ -117,8 +130,10 @@ module Gogetit
|
|
117
130
|
end
|
118
131
|
# post-tasks
|
119
132
|
if options['chef']
|
120
|
-
knife_remove(name
|
133
|
+
knife_remove(name, options)
|
121
134
|
update_databags(config)
|
135
|
+
elsif options['zero']
|
136
|
+
knife_remove(name, options)
|
122
137
|
end
|
123
138
|
end
|
124
139
|
|
@@ -127,25 +142,41 @@ module Gogetit
|
|
127
142
|
:desc => 'A distro name with its series for libvirt provider'
|
128
143
|
method_option :chef, :aliases => '-c', :type => :boolean, \
|
129
144
|
:default => false, :desc => 'Chef awareness'
|
145
|
+
method_option :zero, :aliases => '-z', :type => :boolean, \
|
146
|
+
:default => false, :desc => 'Chef Zero awareness'
|
130
147
|
def deploy(name)
|
148
|
+
abort("'chef' and 'zero' can not be set together.") \
|
149
|
+
if options['chef'] and options['zero']
|
150
|
+
|
131
151
|
Gogetit::CLI.result = libvirt.deploy(name, options.to_hash)
|
132
152
|
|
133
153
|
# post-tasks
|
134
154
|
if options['chef']
|
135
|
-
knife_bootstrap(name, options[:provider], config
|
136
|
-
update_databags(config
|
155
|
+
knife_bootstrap(name, options[:provider], config)
|
156
|
+
update_databags(config)
|
157
|
+
elsif options['zero']
|
158
|
+
knife_bootstrap_zero(name, options[:provider], config)
|
137
159
|
end
|
138
160
|
end
|
139
161
|
|
140
162
|
desc 'release NAME', 'Release a node in MAAS'
|
141
163
|
method_option :chef, :type => :boolean, :desc => "Enable chef awareness."
|
164
|
+
method_option :chef, :aliases => '-c', :type => :boolean, \
|
165
|
+
:default => false, :desc => 'Chef awareness'
|
166
|
+
method_option :zero, :aliases => '-z', :type => :boolean, \
|
167
|
+
:default => false, :desc => 'Chef Zero awareness'
|
142
168
|
def release(name)
|
169
|
+
abort("'chef' and 'zero' can not be set together.") \
|
170
|
+
if options['chef'] and options['zero']
|
171
|
+
|
143
172
|
Gogetit::CLI.result = libvirt.release(name)
|
144
173
|
|
145
174
|
# post-tasks
|
146
175
|
if options['chef']
|
147
|
-
knife_remove(name
|
176
|
+
knife_remove(name, options)
|
148
177
|
update_databags(config)
|
178
|
+
elsif options['zero']
|
179
|
+
knife_remove(name, options)
|
149
180
|
end
|
150
181
|
end
|
151
182
|
|
@@ -153,7 +184,12 @@ module Gogetit
|
|
153
184
|
' either a container or a node(machine) in MAAS again.'
|
154
185
|
method_option :chef, :aliases => '-c', :type => :boolean, \
|
155
186
|
:default => false, :desc => 'Chef awareness'
|
187
|
+
method_option :zero, :aliases => '-z', :type => :boolean, \
|
188
|
+
:default => false, :desc => 'Chef Zero awareness'
|
156
189
|
def rebuild(name)
|
190
|
+
abort("'chef' and 'zero' can not be set together.") \
|
191
|
+
if options['chef'] and options['zero']
|
192
|
+
|
157
193
|
provider = get_provider_of(name, providers)
|
158
194
|
if provider
|
159
195
|
case provider
|
@@ -177,8 +213,8 @@ module Gogetit
|
|
177
213
|
end
|
178
214
|
# post-tasks
|
179
215
|
if options['chef']
|
180
|
-
knife_remove(name
|
181
|
-
update_databags(config
|
216
|
+
knife_remove(name) if options[:chef]
|
217
|
+
update_databags(config)
|
182
218
|
end
|
183
219
|
end
|
184
220
|
end
|
data/lib/gogetit/util.rb
CHANGED
@@ -65,7 +65,7 @@ module Gogetit
|
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
|
-
def
|
68
|
+
def knife_bootstrap_chef(name, provider, config)
|
69
69
|
logger.info("Calling <#{__method__.to_s}>")
|
70
70
|
config[:chef][:target_environment] ||= '_default'
|
71
71
|
if find_executable 'knife'
|
@@ -79,13 +79,28 @@ module Gogetit
|
|
79
79
|
--sudo \
|
80
80
|
--environment #{config[:chef][:target_environment]} \
|
81
81
|
--bootstrap-install-command \"#{install_cmd}\"".gsub(/ * /, ' ')
|
82
|
-
puts 'Bootstrapping..'
|
83
|
-
|
82
|
+
puts 'Bootstrapping with chef-server..'
|
83
|
+
logger.info(knife_cmd)
|
84
84
|
system(knife_cmd)
|
85
85
|
end
|
86
86
|
end
|
87
87
|
end
|
88
88
|
|
89
|
+
def knife_bootstrap_zero(name, provider, config)
|
90
|
+
logger.info("Calling <#{__method__.to_s}>")
|
91
|
+
config[:chef][:target_environment] ||= '_default'
|
92
|
+
if find_executable 'knife'
|
93
|
+
knife_cmd = "knife zero bootstrap #{name} \
|
94
|
+
--node-name #{name} \
|
95
|
+
--ssh-user ubuntu \
|
96
|
+
--sudo \
|
97
|
+
--environment #{config[:chef][:target_environment]}".gsub(/ * /, ' ')
|
98
|
+
puts 'Bootstrapping with chef-zero..'
|
99
|
+
logger.info(knife_cmd)
|
100
|
+
system(knife_cmd)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
89
104
|
def update_databags(config)
|
90
105
|
logger.info("Calling <#{__method__.to_s}>")
|
91
106
|
data_bags_dir = "#{config[:chef][:chef_repo_root]}/data_bags"
|
@@ -146,13 +161,28 @@ module Gogetit
|
|
146
161
|
end
|
147
162
|
end
|
148
163
|
|
149
|
-
def knife_remove(name)
|
164
|
+
def knife_remove(name, options)
|
150
165
|
logger.info("Calling <#{__method__.to_s}>")
|
151
166
|
if find_executable 'knife'
|
152
|
-
if
|
167
|
+
if options['chef']
|
168
|
+
if system('knife ssl check')
|
169
|
+
logger.info("With chef-server..")
|
170
|
+
puts "Deleting node #{name}.."
|
171
|
+
logger.info("knife node delete -y #{name}")
|
172
|
+
system("knife node delete -y #{name}")
|
173
|
+
puts "Deleting client #{name}.."
|
174
|
+
logger.info("knife client delete -y #{name}")
|
175
|
+
system("knife client delete -y #{name}")
|
176
|
+
else
|
177
|
+
abort('knife is not configured properly.')
|
178
|
+
end
|
179
|
+
elsif options['zero']
|
180
|
+
logger.info("With chef-zero..")
|
153
181
|
puts "Deleting node #{name}.."
|
182
|
+
logger.info("knife node delete -y #{name}")
|
154
183
|
system("knife node delete -y #{name}")
|
155
184
|
puts "Deleting client #{name}.."
|
185
|
+
logger.info("knife client delete -y #{name}")
|
156
186
|
system("knife client delete -y #{name}")
|
157
187
|
end
|
158
188
|
end
|
data/lib/gogetit/version.rb
CHANGED
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.15.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-02-
|
11
|
+
date: 2018-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|