foreman_envsync 0.1.2 → 1.1.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 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: