foreman_envsync 0.1.2 → 1.1.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
  SHA256:
3
- metadata.gz: dc773ea7a71834dc602273a36df88bc519ca4d7c5d1375328f7c45e4bd5a970b
4
- data.tar.gz: 44beff5eecc61e68e94cdd5d9994bf0be91ee6963f73b20d442e21e9fd965ce1
3
+ metadata.gz: 10c8912692f23b8db38590dd4181809b06c671f2f21e2f4415d8d14151c6424f
4
+ data.tar.gz: 6068ff7852fbe9a327b317f4416699716d406add74a89ee652194f9c51ffda28
5
5
  SHA512:
6
- metadata.gz: c5e2d1cd4d50541054a5d655c8a8fcb9a75631816fc9fd2ce57da3c8464fd5bc2dcf944636347a18e47092a51fd1bc856a743ef5138b59fb66b68b22b82553ae
7
- data.tar.gz: cba9064068abc38886708c1326d1c384eec7819f22d1a6b1d719c2be739e334010bd238889c7c86e468317275df465d4eb8908299375e4e4a219e4026d5ae54d
6
+ metadata.gz: 65114f82d2422bba699dd30c599f4717ce34c8b32eebd60532f1f02039e57ae570628c89abfad2279d74b3e819066a1cc473850a1da376a55782566b81438cb0
7
+ data.tar.gz: 43a63c0187c9ad92ddf5870c3daf553bc1b354a3e299030be7a02491121020f46e101cfc7a2456f3f938261a6bee8fa35990737df3179602e8b07c8a665fa56b
data/README.md CHANGED
@@ -1,38 +1,430 @@
1
- # ForemanEnvsync
1
+ # foreman_envsync
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/foreman_envsync`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ A highly opinionated utility to sync foreman puppet environments with the set
4
+ of environments known to a `puppetserver` instance *without* also importing the
5
+ classes within those puppet environments.
6
+
7
+
8
+ ## The Problem
9
+
10
+ When using [`r10k`](https://github.com/puppetlabs/r10k) with the [Dynamic
11
+ Environments](https://github.com/puppetlabs/r10k/blob/main/doc/dynamic-environments.mkd)
12
+ pattern in concert with foreman as an ENC, it is highly desirable for new
13
+ environments to automatically appear within foreman. Foreman has a built in
14
+ "import environments" feature which triggers a poll of a `puppetserver`'s known
15
+ environments. Foreman's `hammer` CLI has the ability to trigger an import of
16
+ all environments (and classes) with the `proxy import-classes` sub-sub-command.
17
+ E.g.:
18
+
19
+ ```bash
20
+ /bin/hammer proxy import-classes --id=1
21
+ ```
22
+
23
+ `r10k` provides a hook to run a shell commands after completing an environment
24
+ build, which can be used to invoke `hammer`. E.g.:
25
+
26
+ ```yaml
27
+ ---
28
+ :postrun: ["/bin/hammer", "proxy", "import-classes", "--id=1"]
29
+ ```
30
+
31
+ This automation setup is known to work reasonable well on a VM hosting both
32
+ `foreman 2.4.0` + `puppetserver 6.15.3` provisioned with 16 x64 cores / 32GiB
33
+ RAM / SSD storage under the following conditions:
34
+
35
+ * The `puppetserver` environment class cache is **enabled**.
36
+ * The number of puppet environments is relatively small. I.e. `<= 10`
37
+ * [Probably?] The environments are of moderate complexity. I.e. `< ~100` modules
38
+ * `r10k` is triggering an import via `hammer` 10s of times per day.
39
+
40
+ However, it has been observed that all foreman puma workers (regardless of the
41
+ number configured) will over time creep up to consume 100% of a core,
42
+ interactivity via the www console is abysmal, and environment import may fail
43
+ completely when:
44
+
45
+ * The `puppetserver` environment class cache is **disabled**.
46
+ * The puppet environments have `> 100` modules.
47
+ * `r10k` is triggering an import via `hammer` 10s of times per day.
48
+ * There are `> 10` puppet environments.
49
+
50
+ Distressingly, when the puppetserver environment cache is **disabled**, even a
51
+ small number of puppet agent hosts (~10) will trigger foreman to consume all
52
+ available CPU cores. Reducing the number of puppet environments to `< 10` is
53
+ helpful but not a guarantee that an environment/class import will succeed. It
54
+ was observed that above `40` environments, an import is virtually guaranteed to
55
+ fail.
56
+
57
+
58
+ ## What Is The Malfunction?
59
+
60
+ *Disclaimer: This is essentially speculation based on observed behavior and
61
+ isn't backed up by careful inspection of the code.*
62
+
63
+ From external observation of foreman's behavior, it appears that there is a
64
+ strong built-in assumption that the `puppetserver` environment class cache is
65
+ always enabled and `ETag`s will turn most queries for the classes in an
66
+ environment into essentially a no-op.
67
+
68
+ When a foreman environment import is triggered, foreman not only enumerates
69
+ `puppetserver`'s set of known environments via the `/puppet/v3/environments`
70
+ API endpoint, it also queries for all the classes within an environment using
71
+ `/puppet/v3/environment_classes`. When the environment class cache is disabled
72
+ the time for this query to return seems to be highly variable for the test
73
+ environment with response times ranging from a few seconds to over 30s *per
74
+ environment*. This means that an import cycle with many environments can take
75
+ 10s of minutes. It appears that something in this process causes foreman's
76
+ puma workers to consume 100% of a CPU. It isn't known if this is busy waiting,
77
+ parsing the class list, or something else all together.
78
+
79
+ Compounding the extremely slow performance caused by bulk environment
80
+ importation, foreman also is calling `/puppet/v3/environment_classes` when it
81
+ is invoked as an ENC. This means that every puppet agent run results in a
82
+ puppetserver instance compiling an environment to provide a class list to
83
+ foreman and then again after ENC/fact data has been supplied to create a
84
+ catalog for the agent.
85
+
86
+ To add insult to injury, in this situation the foreman enc is used solely to
87
+ supply parameters and never for class inclusion. All of the effort to produce
88
+ environment class lists and parsing them is completely wasted.
89
+
90
+
91
+ ## How Does This Thing Help?
92
+
93
+ `foreman_envsync` directly obtains the list of puppet environments from
94
+ `puppetserver` without requesting class information. It then removes any
95
+ environments which are present in foreman but not within `puppetserver`. If
96
+ there are any unknown-to-foreman environments, then are created as members of
97
+ all foreman organizations and locations. This completely avoids foreman
98
+ having to wait on `puppetserver` to provide class lists and parsing them.
99
+
100
+
101
+ ## Narrow Use-case
102
+
103
+ This utility is opinionated and has many hard-coded assumptions. Including:
104
+
105
+ * It is being installed on Centos 7.
106
+ * Foreman and `puppetserver` are installed on the same host.
107
+ * Foreman has been installed via `foreman-installer` / puppet code.
108
+ * The `puppetserver` TLS related files are in the standard Puppetlabs locations.
109
+ * `hammer` CLI has been installed and pre-configure with credentials.
110
+ * "new" puppet environments should be visible to all foreman organizations and locations.
111
+
112
+
113
+ ## Obvious Improvements
114
+
115
+ `foreman_envsync` is shelling out to invoke `hammer`. It should probably be
116
+ converted to be a `hammer` plugin.
117
+
118
+ It probably makes sense to use `foreman-proxy` rather than connecting to
119
+ `puppetserver` directly as it avoid needing to deal with TLS authentication.
120
+
121
+ It would be fantastic if foreman's puppet integration was better able to handle
122
+ the environment class cache being disabled. Including:
123
+
124
+ * Not requesting an environment's class list any time the ENC functionality was invoked.
125
+ * A configuration setting to completely disable class handling when it is not needed.
126
+ * An option to import environments only (similar to `foreman_envsync`).
127
+ * A configuration setting to disable the "import environments" feature which
128
+ also requests class lists.
4
129
 
5
- TODO: Delete this and the text above, and describe your gem
6
130
 
7
131
  ## Installation
8
132
 
9
- Add this line to your application's Gemfile:
133
+ This gem is currently intended to provide `foreman_envsync` CLI utility and not
134
+ for use as a library.
135
+
136
+ It is recommend that it is installed into the foreman `tfm` SCL and that all
137
+ dependencies are ignore to avoid disrupting foreman. It is expected to function
138
+ with foremans' gem deps at least as of foreman `2.4.0`.
139
+
140
+
141
+ ```bash
142
+ scl enable tfm -- gem install --bindir /bin --ignore-dependencies --no-ri --no-rdoc --version 0.1.4 foreman_envsync
143
+ ```
144
+
145
+ **If** dependencies need to be installed, the ruby devel package a compiler will be needed. E.g.:
146
+
147
+ ```bash
148
+ yum install -y rh-ruby25-ruby-devel devtoolset-7
149
+ scl enable devtoolset-7 tfm -- gem install --bindir /bin --ignore-dependencies --no-ri --no-rdoc --version 0.1.4 foreman_envsync
150
+ ```
151
+
152
+ ### `r10k` Config
153
+
154
+ It is is highly recommend that the `systemd-cat` utility to be used when configuring the `postrun` hook in `/etc/puppetlabs/r10k/r10k.yaml` so that status output is logged. E.g.:
155
+
156
+ ```yaml
157
+ ---
158
+ :postrun: ["/bin/scl", "enable", "tfm", "--", "systemd-cat", "-t", "foreman_envsync", "/bin/foreman_envsync", "--verbose"]
159
+ ```
160
+
161
+ Example of output in the journal when using `systemd-cat`:
10
162
 
11
- ```ruby
12
- gem 'foreman_envsync'
13
163
  ```
164
+ Jun 08 23:00:38 foreman.example.org foreman_envsync[10643]: found 13 puppetserver environment(s).
165
+ Jun 08 23:00:38 foreman.example.org foreman_envsync[10643]: ---
166
+ Jun 08 23:00:38 foreman.example.org foreman_envsync[10643]: - IT_2978_foreman_tuning_ruby
167
+ Jun 08 23:00:38 foreman.example.org foreman_envsync[10643]: - IT_2953_dds_debugging
168
+ Jun 08 23:00:38 foreman.example.org foreman_envsync[10643]: - IT_2907_tu_reip
169
+ Jun 08 23:00:38 foreman.example.org foreman_envsync[10643]: - production
170
+ Jun 08 23:00:38 foreman.example.org foreman_envsync[10643]: - coredev_production
171
+ Jun 08 23:00:38 foreman.example.org foreman_envsync[10643]: - IT_2978_foreman_tuning
172
+ Jun 08 23:00:38 foreman.example.org foreman_envsync[10643]: - IT_2373_velero
173
+ Jun 08 23:00:38 foreman.example.org foreman_envsync[10643]: - IT_2949_poc_encrypt
174
+ Jun 08 23:00:38 foreman.example.org foreman_envsync[10643]: - IT_2452_pagerduty
175
+ Jun 08 23:00:38 foreman.example.org foreman_envsync[10643]: - IT_2471_opsgenie
176
+ Jun 08 23:00:38 foreman.example.org foreman_envsync[10643]: - IT_2879_ipam
177
+ Jun 08 23:00:38 foreman.example.org foreman_envsync[10643]: - IT_2935_pathfinder_hcu01
178
+ Jun 08 23:00:38 foreman.example.org foreman_envsync[10643]: - IT_2987_rpi_puppet
179
+ Jun 08 23:00:39 foreman.example.org foreman_envsync[10643]: found 13 foreman environment(s).
180
+ Jun 08 23:00:39 foreman.example.org foreman_envsync[10643]: ---
181
+ Jun 08 23:00:39 foreman.example.org foreman_envsync[10643]: - coredev_production
182
+ Jun 08 23:00:39 foreman.example.org foreman_envsync[10643]: - IT_2373_velero
183
+ Jun 08 23:00:39 foreman.example.org foreman_envsync[10643]: - IT_2452_pagerduty
184
+ Jun 08 23:00:39 foreman.example.org foreman_envsync[10643]: - IT_2471_opsgenie
185
+ Jun 08 23:00:39 foreman.example.org foreman_envsync[10643]: - IT_2879_ipam
186
+ Jun 08 23:00:39 foreman.example.org foreman_envsync[10643]: - IT_2907_tu_reip
187
+ Jun 08 23:00:39 foreman.example.org foreman_envsync[10643]: - IT_2935_pathfinder_hcu01
188
+ Jun 08 23:00:39 foreman.example.org foreman_envsync[10643]: - IT_2949_poc_encrypt
189
+ Jun 08 23:00:39 foreman.example.org foreman_envsync[10643]: - IT_2953_dds_debugging
190
+ Jun 08 23:00:39 foreman.example.org foreman_envsync[10643]: - IT_2978_foreman_tuning
191
+ Jun 08 23:00:39 foreman.example.org foreman_envsync[10643]: - IT_2978_foreman_tuning_ruby
192
+ Jun 08 23:00:39 foreman.example.org foreman_envsync[10643]: - IT_2987_rpi_puppet
193
+ Jun 08 23:00:39 foreman.example.org foreman_envsync[10643]: - production
194
+ Jun 08 23:00:39 foreman.example.org foreman_envsync[10643]: found 0 foreman environment(s) unknown to puppetserver.
195
+ Jun 08 23:00:39 foreman.example.org foreman_envsync[10643]: found 0 puppetserver environment(s) unknown to foreman.
196
+ ```
197
+
198
+ ### `foreman-proxy` Config
199
+
200
+ If `foreman_envsync` is being considered then it is probably that foreman is also not being used for class inclusion. In that case, there is no reason for foreman to waste wallclock-time waiting for `puppetserver` to return class lists.
14
201
 
15
- And then execute:
202
+ The wasted time may be minimized by setting
16
203
 
17
- $ bundle install
204
+ ```yaml
205
+ :api_timeout: 1
206
+ ```
18
207
 
19
- Or install it yourself as:
208
+ in `/etc/foreman-proxy/settings.d/puppet_proxy_puppet_api.yml` (and restarting
209
+ `foreman-proxy`).
20
210
 
21
- $ gem install foreman_envsync
22
211
 
23
212
  ## Usage
24
213
 
25
- TODO: Write usage instructions here
214
+ *Note that `foreman_envsync` requires permissions to read `puppetserver`'s TLS
215
+ related files under `/etc/puppetlabs/puppet/ssl`. This may typically be
216
+ achieved by membership in the `puppet` group or running as `root`.*
217
+
218
+ `foreman_envsync` is silent, except for fatal errors, by default:
219
+
220
+ ```bash
221
+ scl enable tfm -- foreman_envsync
222
+ ```
223
+
224
+ The `--verbose` enables detailed output.
225
+
226
+ ```bash
227
+ scl enable tfm -- foreman_envsync --verbose
228
+ ```
229
+
230
+ Example of verbose output:
26
231
 
27
- ## Development
232
+ ```bash
233
+ # scl enable tfm -- foreman_envsync --verbose
234
+ found 22 puppetserver environment(s).
235
+ ---
236
+ - master
237
+ - IT_2953_dds_debugging
238
+ - corecp_production
239
+ - IT_2935_pathfinder_hcu01
240
+ - coredev_production
241
+ - IT_2949_poc_encrypt
242
+ - production
243
+ - IT_2907_tu_reip
244
+ - IT_2373_velero
245
+ - IT_2452_pagerduty
246
+ - IT_2978_foreman_tuning
247
+ - IT_2987_rpi_puppet
248
+ - corels_production
249
+ - ncsa_production
250
+ - disable_IT_2569_tomcat_tls
251
+ - tu_production
252
+ - disable_IT_2483_letencrypt_renewal
253
+ - disable_IT_2417_maddash
254
+ - disable_jhoblitt_rspec
255
+ - disable_jhoblitt_colina
256
+ - IT_2879_ipam
257
+ - IT_2471_opsgenie
28
258
 
29
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
259
+ found 36 foreman environment(s).
260
+ ---
261
+ - corecp_production
262
+ - coredev_production
263
+ - corels_production
264
+ - coretu_production
265
+ - IT_2373_velero
266
+ - IT_2417_maddash
267
+ - IT_2441_dns3_cp
268
+ - IT_2452_pagerduty
269
+ - IT_2471_opsgenie
270
+ - IT_2483_letencrypt_renewal
271
+ - IT_2494_nfs
272
+ - IT_2569_tomcat_tls
273
+ - IT_2613_no_ccs_sal
274
+ - IT_2655_net_audit_ls
275
+ - IT_2657_dhcp
276
+ - IT_2667_poc
277
+ - IT_2693_arista
278
+ - IT_2694_vlan_change
279
+ - IT_2753_comcam_software_v2
280
+ - IT_2820_auxtel_ccs
281
+ - IT_2854_nfs_export
282
+ - IT_2879_ipam
283
+ - IT_2907_tu_reip
284
+ - IT_2911_ntp
285
+ - IT_2935_pathfinder_hcu01
286
+ - IT_2949_poc_encrypt
287
+ - IT_2953_dds_debugging
288
+ - IT_2978_foreman_tuning
289
+ - jhoblitt_colina
290
+ - jhoblitt_rspec
291
+ - master
292
+ - ncsa_production
293
+ - production
294
+ - tickets_DM_25966
295
+ - tickets_DM_27839
296
+ - tu_production
297
+
298
+ found 20 foreman environment(s) unknown to puppetserver.
299
+ ---
300
+ - coretu_production
301
+ - IT_2417_maddash
302
+ - IT_2441_dns3_cp
303
+ - IT_2483_letencrypt_renewal
304
+ - IT_2494_nfs
305
+ - IT_2569_tomcat_tls
306
+ - IT_2613_no_ccs_sal
307
+ - IT_2655_net_audit_ls
308
+ - IT_2657_dhcp
309
+ - IT_2667_poc
310
+ - IT_2693_arista
311
+ - IT_2694_vlan_change
312
+ - IT_2753_comcam_software_v2
313
+ - IT_2820_auxtel_ccs
314
+ - IT_2854_nfs_export
315
+ - IT_2911_ntp
316
+ - jhoblitt_colina
317
+ - jhoblitt_rspec
318
+ - tickets_DM_25966
319
+ - tickets_DM_27839
320
+
321
+ deleted 20 foreman environment(s).
322
+ ---
323
+ - message: Environment deleted.
324
+ id: 12
325
+ name: coretu_production
326
+ - message: Environment deleted.
327
+ id: 4602
328
+ name: IT_2417_maddash
329
+ - message: Environment deleted.
330
+ id: 4664
331
+ name: IT_2441_dns3_cp
332
+ - message: Environment deleted.
333
+ id: 4637
334
+ name: IT_2483_letencrypt_renewal
335
+ - message: Environment deleted.
336
+ id: 4649
337
+ name: IT_2494_nfs
338
+ - message: Environment deleted.
339
+ id: 4658
340
+ name: IT_2569_tomcat_tls
341
+ - message: Environment deleted.
342
+ id: 4676
343
+ name: IT_2613_no_ccs_sal
344
+ - message: Environment deleted.
345
+ id: 4691
346
+ name: IT_2655_net_audit_ls
347
+ - message: Environment deleted.
348
+ id: 4688
349
+ name: IT_2657_dhcp
350
+ - message: Environment deleted.
351
+ id: 4736
352
+ name: IT_2667_poc
353
+ - message: Environment deleted.
354
+ id: 4709
355
+ name: IT_2693_arista
356
+ - message: Environment deleted.
357
+ id: 4710
358
+ name: IT_2694_vlan_change
359
+ - message: Environment deleted.
360
+ id: 4771
361
+ name: IT_2753_comcam_software_v2
362
+ - message: Environment deleted.
363
+ id: 4746
364
+ name: IT_2820_auxtel_ccs
365
+ - message: Environment deleted.
366
+ id: 4792
367
+ name: IT_2854_nfs_export
368
+ - message: Environment deleted.
369
+ id: 4762
370
+ name: IT_2911_ntp
371
+ - message: Environment deleted.
372
+ id: 4735
373
+ name: jhoblitt_colina
374
+ - message: Environment deleted.
375
+ id: 4619
376
+ name: jhoblitt_rspec
377
+ - message: Environment deleted.
378
+ id: 4581
379
+ name: tickets_DM_25966
380
+ - message: Environment deleted.
381
+ id: 4686
382
+ name: tickets_DM_27839
383
+
384
+ found 6 puppetserver environment(s) unknown to foreman.
385
+ ---
386
+ - IT_2987_rpi_puppet
387
+ - disable_IT_2569_tomcat_tls
388
+ - disable_IT_2483_letencrypt_renewal
389
+ - disable_IT_2417_maddash
390
+ - disable_jhoblitt_rspec
391
+ - disable_jhoblitt_colina
392
+
393
+ found 1 foreman location(s).
394
+ ---
395
+ - 2
396
+
397
+ found 1 foreman organization(s).
398
+ ---
399
+ - 1
400
+
401
+ created 6 foreman environment(s).
402
+ ---
403
+ - message: Environment created.
404
+ id: 4800
405
+ name: IT_2987_rpi_puppet
406
+ - message: Environment created.
407
+ id: 4801
408
+ name: disable_IT_2569_tomcat_tls
409
+ - message: Environment created.
410
+ id: 4802
411
+ name: disable_IT_2483_letencrypt_renewal
412
+ - message: Environment created.
413
+ id: 4803
414
+ name: disable_IT_2417_maddash
415
+ - message: Environment created.
416
+ id: 4804
417
+ name: disable_jhoblitt_rspec
418
+ - message: Environment created.
419
+ id: 4805
420
+ name: disable_jhoblitt_colina
421
+ ```
30
422
 
31
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
423
 
33
424
  ## Contributing
34
425
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/foreman_envsync.
426
+ Bug reports and pull requests are welcome on GitHub at https://github.com/lsst-it/foreman_envsync.
427
+
36
428
 
37
429
  ## License
38
430
 
data/exe/foreman_envsync CHANGED
@@ -41,21 +41,21 @@ def key_file(file)
41
41
  OpenSSL::PKey::RSA.new(File.read(file))
42
42
  end
43
43
 
44
- def hammer_cmd(cmd)
44
+ def hammer_cmd(cmd, ignore_exitstatus: false)
45
45
  stdout, stderr, s = Open3.capture3(cmd)
46
46
  unless s.success?
47
47
  puts "command #{cmd} failed"
48
48
  puts stderr
49
- exit s.exitstatus
49
+ exit s.exitstatus unless ignore_exitstatus
50
50
  end
51
51
 
52
52
  stdout
53
53
  end
54
54
 
55
- def hammer_cmd_parse(cmd)
56
- stdout = hammer_cmd(cmd)
55
+ def hammer_cmd_parse(cmd, **opt)
56
+ stdout = hammer_cmd(cmd, opt)
57
57
 
58
- JSON.parse(stdout)
58
+ JSON.parse(stdout) unless stdout.empty?
59
59
  end
60
60
 
61
61
  def collect_one_field(data, field)
@@ -78,7 +78,7 @@ end
78
78
  def foreman_env_delete(name)
79
79
  cmd = "hammer --output=json puppet-environment delete --name #{name}"
80
80
 
81
- hammer_cmd_parse(cmd)
81
+ hammer_cmd_parse(cmd, ignore_exitstatus: true)
82
82
  end
83
83
 
84
84
  def foreman_env_create(name, location_ids, org_ids)
@@ -143,7 +143,7 @@ verbose_list "found %d foreman environment(s) unknown to puppetserver.", extra_e
143
143
  # Remove any foreman envs unknown to puppetserver
144
144
  #
145
145
  report = extra_envs.collect { |x| foreman_env_delete(x) } unless extra_envs.empty?
146
- verbose_list "deleted %d foreman environment(s).", report
146
+ verbose_list "deleted %d foreman environment(s).", report.compact
147
147
 
148
148
  # update foreman envs if anything was deleted
149
149
  f_envs = foreman_env_list unless report.nil?
@@ -26,11 +26,11 @@ Gem::Specification.new do |spec|
26
26
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
27
27
  spec.require_paths = ["lib"]
28
28
 
29
- spec.add_dependency "hammer_cli"
30
- spec.add_dependency "hammer_cli_foreman"
31
- spec.add_dependency "rest-client", "~> 2.1.0"
32
- spec.add_dependency "rubocop-rake"
33
- spec.add_dependency "rubocop-rspec"
29
+ spec.add_runtime_dependency "hammer_cli"
30
+ spec.add_runtime_dependency "hammer_cli_foreman"
31
+ spec.add_runtime_dependency "rest-client", "~> 2.0"
32
+ spec.add_development_dependency "rubocop-rake"
33
+ spec.add_development_dependency "rubocop-rspec"
34
34
 
35
35
  # For more information and examples about making a new gem, checkout our
36
36
  # guide at: https://bundler.io/guides/creating_gem.html
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ForemanEnvsync
4
- VERSION = "0.1.2"
4
+ VERSION = "1.1.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_envsync
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Hoblitt
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-06-07 00:00:00.000000000 Z
11
+ date: 2021-11-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hammer_cli
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 2.1.0
47
+ version: '2.0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 2.1.0
54
+ version: '2.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rubocop-rake
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -59,7 +59,7 @@ dependencies:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
- type: :runtime
62
+ type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
@@ -73,7 +73,7 @@ dependencies:
73
73
  - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
- type: :runtime
76
+ type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements: