[[vagrant-registration]] = vagrant-registration :toc: :toc-placement!:
The vagrant-registration plugin for Vagrant allows developers to easily register their guests for updates on systems with a subscription model (like Red Hat Enterprise Linux).
This plugin would run register action on vagrant up
before any
provisioning and unregister on vagrant halt
or vagrant destroy
.
The actions then call the registration capabilities that have to be
provided for the given OS.
''' toc::[] '''
== Installation
Install vagrant-registration as any other Vagrant plugin:
If you are on Fedora, you can install the packaged version of the plugin by running:
== Usage
The plugin is designed in a registration-manager agnostic way, which means, that the plugin itself, depends neither on any OS nor on the way of registration. The vagrant-registration plugin only calls registration capabilities for the given guest, passes the configuration options to them and handles interactive registration.
That being said, this plugin currently ships only with registration
capability files for RHEL's Subscription Manager and rhn_register
.
Feel free to submit others.
To configure the plugin, always include the configuration options mentioned in this file within the following configuration block in your Vagrantfile.
.... Vagrant.configure('2') do |config| ... end ....
=== General Configuration
skip
option to true
:false
so that the box
will unregister only on destroy:subscription_manager
as the registration manager
provider. You can however, change that by setting the option to a
different manager:=== Credential Configuration
You can set up the credentials as follows:
Vagrant.configure('2') do |config| ... if Vagrant.has_plugin?('vagrant-registration') config.registration.username = 'foo' config.registration.password = 'bar' end
This should go, preferably, into the Vagrantfile in your Vagrant home directory (defaults to ~/.vagrant.d), to make it available for every project. It can be later overridden in an individual project's Vagrantfile if needed.
If you prefer not to store your username and/or password on your filesystem, you can optionally configure vagrant-registration plugin to use environment variables such as:
If you do not configure your credentials as outlined above, you will
receive a maximum of 3 prompts for them during the vagrant up
process.
Please note that the interactive mode asks you for the preferred registration pair only for the configured manager.
=== HTTP Proxy Configuration
HTTP Proxy can be configured via the proxy, proxyUser and proxyPassword configuration options:
As described in the link:#credentials-configuration[credentials configuration] section, these settings can be placed either into the Vagrantfile in the Vagrant home directory or provided as environment variables.
=== subscription-manager Configuration
The vagrant-registration plugin uses subscription_manager
as the
default manager. This can also be explicitly configured by setting the
manager
option to subscription_manager
:
In case you choose subscription_manager
as the manager, you would be
asked for your user credentials, such as the username and password.
The vagrant-registration plugin supports all the options for the
subscription-manager's register command. You can set any option easily
by setting config.registration.OPTION_NAME = 'OPTION_VALUE'
in your
Vagrantfile (please see the subscription-manager's documentation for
option description).
==== subscription-manager Default Options
--force
flag automatically
when subscribing. If you would like to disable this feature, set force
option to false
:--auto-attach
flag automatically when
subscribing. To disable this option, set auto_attach
option to
false
:Note that the auto_attach
option is set to false when using
org/activationkey for registration or if pools are specified.
==== subscription-manager Options Reference
config.registration.username
config.registration.password
config.registration.serverurl
config.registration.ca_cert
config.registration.baseurl
config.registration.org
config.registration.environment
config.registration.name
config.registration.auto_attach
config.registration.activationkey
config.registration.servicelevel
config.registration.release
config.registration.force
config.registration.type
config.registration.skip
config.registration.proxy
config.registration.proxyUser
config.registration.proxyPassword
#
=== rhn-register Configuration
vagrant-registration will use the rhn_register
manager only if
explicitly configured by setting the manager
option to rhn_register
:
In case of a rhn_register
manager, the preferred registration pair is
the username/password/serverurl combination.
vagrant-registration supports most of the options of rhnreg_ks's
command. You can set any option easily by setting
config.registration.OPTION_NAME = 'OPTION_VALUE'
in your Vagrantfile
(please see the rhnreg_ks
's documentation for option description).
rhn_register
manager reuses the naming of subscription-manager
's
command options where possible.
==== rhn-register Default Options
rhnreg_ks
command will fail if you attempt to register
an already registered machine (see the man page for explanation),
therefore vagrant-registration appends the --force
flag automatically
when subscribing. If you would like to disable this feature, set force
option to false
:==== rhn-register Options Reference
config.registration.username
--username
option.config.registration.password
--serverUrl
option of rhnreg_ks command.#
config.registration.serverurl
--sslCACert
option of rhnreg_ks command.#
/etc/sysconfig/rhn/up2date
is updated to:sslCACert=/usr/share/rhn/<ca_file_name>
#
/etc/sysconfig/rhn/up2date
is updatedsslCACert=/usr/share/rhn/RHNS-CA-CERT
config.registration.ca_cert
--systemorgid
option of rhnreg_ks command.config.registration.org
--profilename
option of rhnreg_ks command.config.registration.name
config.registration.activationkey
config.registration.use_eus_channel
config.registration.nohardware
config.registration.nopackages
config.registration.novirtinfo
config.registration.norhnsd
config.registration.force
config.registration.skip
config.registration.proxy
config.registration.proxyUser
== Development
The use of https://rvm.io[RVM] is recommended. Verified to work with ruby-2.2.10.
.... rvm install 2.2 rvm use 2.2 ....
To install a development environment, clone the repo and prepare dependencies by:
.... gem install bundler bundle install ....
=== Tests
==== Minitest
The source contains a set of http://ruby-doc.org/stdlib-2.0.0/libdoc/minitest/rdoc/MiniTest.html[Minitest] based unit tests. They can be run via:
.... $ bundle exec rake test ....
==== Acceptance tests
The source also contains a set of https://cucumber.io/[Cucumber] based acceptance tests. They can be run via:
.... $ bundle exec rake features ....
The tests assume that the CDK box files are available under
build/boxes/cdk-
As per default, only the scenarios for CDK in combination with VirtualBox are run. You can also run the tests against Libvirt, using the environment variable PROVIDER:
....
$ bundle exec rake features PROVIDER=libvirt
$ bundle exec rake features PROVIDER=virtualbox,libvirt ....
You can also run a single feature specifying the explicit feature file to use:
....
$ bundle exec rake features FEATURE=features/
After test execution the acceptance test reports can be found under __build/features_report.html__. They can also be opened via:
.... $ bundle exec rake features:open_report ....
== Releasing
To release a new version of vagrant-registration you will need to do the following:
(only contributors of the GitHub repo and owners of the project at RubyGems will have rights to do this)
v
.rake build
gem push pkg/vagrant-registration-1.3.2.gem
vagrant plugin update
vagrant plugin update vagrant-registration
== Acknowledgements
The project would like to make sure we thank https://github.com/purpleidea/[purpleidea], https://github.com/humaton/[humaton], https://github.com/strzibny[strzibny], https://github.com/scollier/[scollier], https://github.com/puzzle[puzzle], https://github.com/voxik[voxik], https://github.com/lukaszachy[lukaszachy], https://github.com/goern[goern], https://github.com/iconoeugen[iconoeugen] and https://github.com/pvalena[pvalena] (in no particular order) for their contributions of ideas, code and testing for this project.