foreman_openbolt 0.1.1 → 1.0.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: 9c2932001d70466f491793accaaf126a6995e8278da33c771c8e74802dee996c
4
- data.tar.gz: 7ce6c51f49107dfefe7e28ed9a62eb4b5f41e838ba0fdb057cecf97e67957cfc
3
+ metadata.gz: 1f42a0b837a7513fd603eaeb6e9b5a75a31be236f6f64d7c8d142404f3d557f1
4
+ data.tar.gz: 605ce929b8b03b615cebf42eb343b18bdc6ae3f0169af349f8476be86a8737eb
5
5
  SHA512:
6
- metadata.gz: f3667fe230f4417c35b7acf87411132be4122999bb858e6f753b214891809d33732ca3cd2b7f49ee23994f8a4d9d9e969266532989d4a54e1a86c3d0bfccf4cc
7
- data.tar.gz: c1e2ade0752b6546fd5e3146128e8454fd89455fb291d5cedc774de6b340bc61b7b45683af3594fd9df381841c395b3156ce462b4f33fa89cbb345a075068a7e
6
+ metadata.gz: 490aa0856a8806f9237c1a1284d626290571835881776e92892921d8414f6fa8f6d18edf73a6e7328ff3d666d5d515158474db6097f0e40915a0b2855dc2eb99
7
+ data.tar.gz: 92be9c08b82ff27aace85e78005bdf73c905c1d0b2ff2583eda208f535c03c69fa0a3736d48c8e940cedd3eb929a8325a93218efe6873618c777820a0ba84025
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # ForemanPluginTemplate
1
+ # foreman-openbolt
2
2
 
3
3
  [![License](https://img.shields.io/github/license/overlookinfra/foreman_openbolt.svg)](https://github.com/overlookinfra/foreman_openbolt/blob/master/LICENSE)
4
4
  [![Test](https://github.com/overlookinfra/foreman_openbolt/actions/workflows/test.yml/badge.svg)](https://github.com/overlookinfra/foreman_openbolt/actions/workflows/test.yml)
@@ -6,28 +6,131 @@
6
6
  [![RubyGem Version](https://img.shields.io/gem/v/foreman_openbolt.svg)](https://rubygems.org/gems/foreman_openbolt)
7
7
  [![RubyGem Downloads](https://img.shields.io/gem/dt/foreman_openbolt.svg)](https://rubygems.org/gems/foreman_openbolt)
8
8
 
9
- *Introdction here*
9
+ Bringing OpenBolt Task & Plans into Foreman!
10
+
11
+ ## Introduction
12
+
13
+ [OpenBolt](https://github.com/OpenVoxProject/openbolt) is the open source successor of [bolt](https://github.com/puppetlabs/bolt) by [Perforce](https://www.perforce.com/).
14
+ OpenBolt supports running Tasks or Plans against various targets / via different transport protocols.
15
+ OpenBolt and Bolt are CLI-only tools.
16
+ They connect to the targets from a central location (usually a jumpnode or workstation).
17
+
18
+ ## Tasks
19
+
20
+ Tasks are little executeable things, like binaries or scripts.
21
+ They are enhanced with a metadata file, which describes input and output parameters.
22
+ A task is copied to N targets and executed there.
23
+
24
+ ## Plans
25
+
26
+ Plans provide complex logic options, written in Puppet DSL.
27
+ Besides the usual Puppet DSL functions, it's also possible to execute tasks and evaluate their responses.
28
+
29
+ ## OpenBolt in Foreman!
30
+
31
+ OpenBolt is the Ansible counterpart and OpenBolt is Puppet "native".
32
+ OpenBolt and Puppet integrate very well together and OpenBolt can reuse your existing Puppet code.
33
+ Since OpenBolt is a CLI only application, and most Puppet users run Foreman anyways, it made sense to integrate OpenBolt into Foreman, instead of writing another web UI.
10
34
 
11
35
  ## Installation
12
36
 
13
- See [How_to_Install_a_Plugin](http://projects.theforeman.org/projects/foreman/wiki/How_to_Install_a_Plugin)
14
- for how to install Foreman plugins
37
+ The installation is split into four parts:
38
+
39
+ * Foreman Plugin
40
+ * Foreman Smartproxy Plugin
41
+ * OpenBolt
42
+ * Code Deployment
43
+
44
+ See [How_to_Install_a_Plugin](https://theforeman.org/plugins/#2.Installation) for how to install Foreman plugins.
45
+ The [theforeman/foreman](https://github.com/theforeman/puppet-foreman/blob/master/manifests/plugin/openbolt.pp) puppet module also supports the **Foreman plugin** installation.
46
+ The [theforeman/foreman_proxy](https://github.com/theforeman/puppet-foreman_proxy/blob/master/manifests/plugin/openbolt.pp) puppet module also supports the **Foreman Smartproxy plugin** installation.
47
+
48
+ **as of 2025-12-15 integration into the foreman installer is still pending**
49
+
50
+ The Foreman plugin provides UI elements to start Tasks on various nodes.
51
+ Foreman then talks to a Smartproxy to run OpenBolt.
52
+ The Smartproxy also establishes the connections to the various targets.
53
+ This is usually a ssh or WinRM connection (and soon choria, see [the TODO section](#todo).
54
+
55
+ You need to have `bolt` in your `$PATH` on the Smartproxy.
56
+ You can use the legacy bolt packages from Perforce from the `puppet-tools` repo on [apt.puppet.com](https://apt.puppet.com/) or [yum.puppet.com](https://yum.puppet.com/).
57
+ If you have an active Perforce license, you can also download [their commercial bolt version](https://help.puppet.com/bolt/current/topics/bolt_installing.htm).
58
+ OpenBolt packages are available at [yum.voxpupuli.org](https://yum.voxpupuli.org/) & [apt.voxpupuli.org](https://apt.voxpupuli.org/) in the openvox8 repo.
59
+
60
+ **The Foreman integration is tested with OpenBolt and the last Bolt opensource release 4.0.0**
61
+
62
+ The integration is supported on Foreman 3.15 and all following versions, including development/nightly builds.
63
+
64
+ OpenBolt relies on Tasks & Plans. They are distributed as puppet modules.
65
+ The plugin assumes that you deployed your code.
66
+ We recommend to use [r10k](https://github.com/puppetlabs/r10k?tab=readme-ov-file#r10k) or [g10k](https://github.com/xorpaul/g10k?tab=readme-ov-file#g10k) to deploy code, as you do it on your compilers.
67
+
68
+ A handful of core/default Tasks & Plans are also included in the [OpenBolt rpm/deb packages](https://github.com/OpenVoxProject/openbolt/blob/main/Puppetfile).
15
69
 
16
70
  ## Usage
17
71
 
18
- *Usage here*
72
+ (all screenshots were taken on Foreman 3.17)
73
+
74
+ After installation, you will see a new UI element
75
+
76
+ ![foreman UI menu screenshot](./ext/foreman-ui-menu.png)
77
+
78
+ The "Launch Task" option allows you to select any smartproxy with the `openbolt` feature (which is available when the OpenBolt Smartproxy plugin is installed).
79
+ Afterwards you can select N targets to run the task and select an available task from the selected Smartproxy.
80
+ On the right side you can configure OpenBolt connection settings.
81
+
82
+ ![launch task detail view](./ext/foreman-launch-task.png)
83
+
84
+ After selecting a task, the task metadata is fetched and shown.
85
+ Additional input elements will appear, if the task support it.
86
+
87
+ ![service task metadata](./ext/task-metadata-minimal.png)
88
+
89
+ The metadata can contains a description and datatypes for tasks.
90
+ Those information can be shown as well.
91
+
92
+ ![service task detailed metadata](./ext/task-metadata.png)
93
+
94
+ While the task is running, the UI polls the status from the smart proxy.
95
+
96
+ ![task loading screen](./ext/task-running.png)
97
+
98
+ After the task finished, it will display a success for failure page.
99
+
100
+ ![failed task view](./ext/task-execution-details.png)
101
+
102
+ You can also see the used parameters for a task.
103
+
104
+ ![task used parameters](./ext/task-task-details.png)
105
+
106
+ We also display the used OpenBolt command line, in case you want to manually run it or debug it.
107
+
108
+ ![display used OpenBolt command](./ext/task-log-output.png)
109
+
110
+ OpenBolt returns JSON for executed tasks.
111
+ That's visible in the UI.
112
+ For failed tasks but also for passed tasks.
113
+
114
+ ![failed task output](./ext/task-result.png)
115
+
116
+ ![service task passed on two nodes](./ext/task-successful-result.png)
117
+
19
118
 
20
119
  ## TODO
21
120
 
22
- *Todo list here*
121
+ * Integrate plans into the web UI
122
+ * provide a choria transport plugin
23
123
 
24
- ## Contributing
124
+ ## Contributing & support
25
125
 
26
126
  Fork and send a Pull Request. Thanks!
127
+ If you have questions or need professional support, please join the `#sig-orchestrator` channel on the [Vox Pupuli slack](https://voxpupuli.org/connect/).
27
128
 
28
129
  ## Copyright
29
130
 
30
- Copyright (c) *year* *your name*
131
+ Copyright (c) *2025* *Overlook InfraTech*
132
+
133
+ Copyright (c) *2025* *betadots GmbH*
31
134
 
32
135
  This program is free software: you can redistribute it and/or modify
33
136
  it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ForemanOpenbolt
4
- VERSION = '0.1.1'
4
+ VERSION = '1.0.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_openbolt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Overlook InfraTech
@@ -13,16 +13,22 @@ dependencies:
13
13
  name: foreman-tasks
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
- - - "~>"
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: 11.0.0
19
+ - - "<"
17
20
  - !ruby/object:Gem::Version
18
- version: '11.0'
21
+ version: '13'
19
22
  type: :runtime
20
23
  prerelease: false
21
24
  version_requirements: !ruby/object:Gem::Requirement
22
25
  requirements:
23
- - - "~>"
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: 11.0.0
29
+ - - "<"
24
30
  - !ruby/object:Gem::Version
25
- version: '11.0'
31
+ version: '13'
26
32
  - !ruby/object:Gem::Dependency
27
33
  name: erb_lint
28
34
  requirement: !ruby/object:Gem::Requirement
@@ -186,14 +192,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
186
192
  version: '2.7'
187
193
  - - "<"
188
194
  - !ruby/object:Gem::Version
189
- version: '4'
195
+ version: '5'
190
196
  required_rubygems_version: !ruby/object:Gem::Requirement
191
197
  requirements:
192
198
  - - ">="
193
199
  - !ruby/object:Gem::Version
194
200
  version: '0'
195
201
  requirements: []
196
- rubygems_version: 3.6.9
202
+ rubygems_version: 4.0.3
197
203
  specification_version: 4
198
204
  summary: Foreman OpenBolt integration
199
205
  test_files: