Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support plugins installation #138

Merged
merged 1 commit into from
Jan 31, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ Downloads and installs the latest Nexus 3 Repository Manager OSS.
documentation on newer releases.
- `node['nexus3']['outbound_proxy']` - Configure outbound HTTP/HTTPS proxy. See example
'Configure outbound HTTP/HTTPS proxy for all the attributes.'
- `node['nexus3']['plugins']` - Install external plugins, takes a hash of `{ 'plugin-name' : { "name": "name override", "source": "..", "checksum": "..", "action": "remote file action"}}`. Plugins should be bundled in KAR format, and will be written on disk as `<plugin-name>-bundle.kar`

### Examples

Expand Down
12 changes: 12 additions & 0 deletions attributes/default.rb
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,15 @@
default['nexus3']['vmoptions_variables']['Dkaraf.startLocalConsole'] = false
default['nexus3']['vmoptions_variables']['Djava.net.preferIPv4Stack'] = true
default['nexus3']['vmoptions_variables']['Djava.endorsed.dirs'] = 'lib/endorsed'

# Plugins bundles in KAR format to install
#
# default['nexus3']['plugins']['nexus-repository-chef'] = {
# "name": "force_another_name",
# "source": "https://on.the.internet/nexus-repository-chef-0.0.10-bundle.kar",
# "checksum": "8e6494bd8edbf3beb6b7054d599561e698dcf3f666c2114b7126c246804484a9",
# "action": "create" # https://docs.chef.io/resources/remote_file/#actions
# }
#
# https://help.sonatype.com/en/installing-bundles.html
default['nexus3']['plugins'] = {}
14 changes: 14 additions & 0 deletions resources/default.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
property :properties_variables, Hash, default: lazy { node['nexus3']['properties_variables'] }
property :vmoptions_variables, Hash, default: lazy { node['nexus3']['vmoptions_variables'] }
property :outbound_proxy, [Hash, NilClass], sensitive: true, default: lazy { node['nexus3']['outbound_proxy'] }
property :plugins, Hash, default: lazy { node['nexus3']['plugins'] }

action :install do
install_dir = ::File.join(new_resource.path, "nexus-#{new_resource.version}")
Expand Down Expand Up @@ -96,6 +97,19 @@
notifies :run, "ruby_block[#{blocker}]", :delayed
end

# Install plugins
new_resource.plugins.each do |name, config|
plugin_file_path = ::File.join(install_dir, 'deploy', "#{config['name'] || name}-bundle.kar")
remote_file plugin_file_path do
source config['source']
checksum config['checksum']
owner new_resource.nexus3_user
action((config['action'] || :create).to_sym)
notifies :restart, "nexus3_service[#{new_resource.service_name}]", :delayed
notifies :run, "ruby_block[#{blocker}]", :delayed
end
end

link new_resource.nexus3_home do
to install_dir
owner new_resource.nexus3_user
Expand Down