cookbook 'abiquo', '= 0.7.2'
abiquo
(31) Versions
0.7.2
-
Follow5
Installs and configures an Abiquo platform
cookbook 'abiquo', '= 0.7.2', :supermarket
knife supermarket install abiquo
knife supermarket download abiquo
Abiquo Cookbook
This cookbook provides several recipes to install an upgrade an Abiquo platform.
It allows to provision an Abiquo Server, the Remote Services server, standalone V2V
server, monitoring server and a KVM hypervisor from scratch, as long as upgrading
an existing Abiquo installation using the latest nightly builds.
Requirements
- CentOS >= 6.7
This cookbook depends on the following cookbooks:
- apache2
- cassandra-dse
- iptables
- java
- java-management
- selinux
- ssl_certificate
- yum
Recipes
The cookbook contains the following recipes:
-
recipe[abiquo]
- Installs an Abiquo Platform -
recipe[abiquo::repository]
- Configures the Abiquo yum repositories -
recipe[abiquo::install_monolithic]
- Installs an Abiquo Monolithic -
recipe[abiquo::install_server]
- Installs an Abiquo Server -
recipe[abiquo::install_remoteservices]
- Installs the Abiquo Remote Services -
recipe[abiquo::install_v2v]
- Installs an standalone V2V Server -
recipe[abiquo::install_kvm]
- Installs the KVM hypervisor -
recipe[abiquo::install_monitoring]
- Installs an Abiquo Monitoring node with Cassandra and kairosDB -
recipe[abiquo::setup_monolithic]
- Configures the Abiquo Monolithic Server -
recipe[abiquo::setup_server]
- Configures the Abiquo Server -
recipe[abiquo::setup_remoteservices]
- Configures the Abiquo Remote Services -
recipe[abiquo::setup_v2v]
- Configures an standalone V2V Server -
recipe[abiquo::setup_kvm]
- Configures the KVM hypervisor -
recipe[abiquo::setup_monitoring]
- Configures the Abiquo Monitoring node -
recipe[abiquo::upgrade]
- Upgrades an Abiquo Platform -
recipe[abiquo::install_database]
- Installs the Abiquo database -
recipe[abiquo::install_ext_services]
- Installs the Abiquo supporting services like Redis, RabbitMQ, etc. -
recipe[abiquo::certificate]
- Configures the SSL certificates -
recipe[abiquo::service]
- Manages Abiquo tomcat service
Attributes
The following attributes are under the node['abiquo']
namespace.
Attribute | Description | Type | Default |
---|---|---|---|
['profile'] |
The profile to install: "monolithic", "server", "remoteservices", "v2v", "kvm" or "monitoring" | String | "monolithic" |
['install_ext_services'] |
Whether or not to install supporting services like MariaDB, Redis, RabbitMQ, etc. | Boolean | true |
['ui_address_type'] |
The attribute to use as the Abiquo UI address: "fqdn", "ipaddress", "fixed" | String | "fqdn" |
['ui_address'] |
When ['ui_address_type'] is fixed use this as address |
String | node['fqdn'] |
['nfs']['mountpoint'] |
The path where the image repository is mounted | String | "/opt/vm_repository" |
['nfs']['location'] |
If set, the NFS repository to mount | String | nil |
['license'] |
The Abiquo license to install | String | nil |
['properties'] |
Hash with additional Abiquo properties to add to the Abiquo configuration file | Hash | {} |
['yum']['base-repo'] |
The main Abiquo yum repository | String | "http://mirror.abiquo.com/abiquo/3.6/os/x86_64" |
['yum']['update-repo'] |
The Abiquo updates yum repository | String | "http://mirror.abiquo.com/abiquo/3.6/updates/x86_64" |
['yum']['nightly-repo'] |
A yum repository with nightly builds | String | nil |
['db']['host'] |
The database host used when running the database upgrade | String | "localhost"" |
['db']['port'] |
The database port used when running the database upgrade | Integer | 3306 |
['db']['user'] |
The database user used when running the database upgrade | String | "root" |
['db']['password'] |
The database password used when running the database upgrade | String | nil |
['db']['upgrade'] |
Run the database upgrade when upgrading the monolithic profile | Boolean | true |
['aim']['port'] |
In a KVM, the port where the Abiquo AIM agent will listen | Integer | 8889 |
['tomcat']['http-port'] |
The port where the Tomcat listens to HTTP traffic | Integer | 8009 |
['tomcat']['ajp-port'] |
The port where the Tomcat listens to AJP traffic | Integer | 8010 |
['tomcat']['wait-for-webapps'] |
If Chef will wait for the webapps to be running after restarting Tomcat | Boolean | false |
['monitoring']['kairosdb']['host'] |
The host where KairosDB is listening | Integer | "localhost" |
['monitoring']['kairosdb']['port'] |
The port where KairosDB is listening | Integer | 8080 |
['monitoring']['kairosdb']['version'] |
The version of KairosDB to install in the monitoring node | String | "0.9.4" |
['monitoring']['kairosdb']['release'] |
The release of the configured KairosDB version to install in the monitoring node | String | "6" |
['monitoring']['db']['host'] |
The monitoring database host | String | "localhost" |
['monitoring']['db']['port'] |
The monitoring database port | Integer | 3306 |
['monitoring']['db']['user'] |
The monitoring database user | String | "root" |
['monitoring']['db']['password'] |
The monitoring database password | String | "" |
['monitoring']['db']['install'] |
Install the monitoring database when installing the monitoring node | Boolean | true |
['monitoring']['rabbitmq']['host'] |
The RabbitMQ host where the monitoring system will notify alerts | String | "localhost" |
['monitoring']['rabbitmq']['port'] |
The RabbitMQ listening port for the monitoring system notifications | Integer | 5672 |
['monitoring']['rabbitmq']['user'] |
The RabbitMQ user for the monitoring system notifications | String | "guest" |
['monitoring']['rabbitmq']['password'] |
The RabbitMQ password for the monitoring system notifications | String | "guest" |
['monitoring']['emmett']['port'] |
The port where the Emmett service is listening | Integer | 36638 |
['monitoring']['cassandra']['cluster_name'] |
The name for the Cassandra cluster in the monitoring node | String | "abiquo" |
['certificate']['common_name'] |
Common name for the generated certificate | String | node['fqdn'] |
['certificate']['organization'] |
Organization for the generated certificate | String | "Abiquo" |
['certificate']['department'] |
Department for the generated certificate | String | "Engineering" |
['certificate']['country'] |
Country for the generated certificate | String | "ES" |
['certificate']['source'] |
Source for the generated certificate | String | "self-signed" |
['certificate']['file'] |
If ['certificate']['file'] is false, use this file as certificate |
String | '/etc/pki/tls/certs/localhost.crt' |
['certificate']['key_file'] |
If ['certificate']['file'] is false, use this file as the certificate private key |
String | '/etc/pki/tls/private/localhost.key' |
['certificate']['ca_file'] |
If ['certificate']['file'] is false, use this file as tha CA certificate |
String | nil |
Resources and providers
The Abiquo cookbook provides the following LWRPs:
abiquo_wait_for_webapp
This LWRP will make the Chef run wait until the configured webapp is started.
Parameters
-
host
- The address where the webapp is running -
port
- The port where the webapp is listening -
webapp
- The name of the webapp -
open_timeout
- The timeout to open a connection to the webapp -
read_timeout
- The timeout to read from a connection to the webapp
Example
abiquo_wait_for_webapp "api" do
host "localhost"
port 8009
retries 3 # Retry if Tomcat is still not started
retry_delay 5
action :wait
end
abiquo_wait_for_port
This LWRP will make the Chef run wait until the configured port is open.
Parameters
-
host
- The address where the service is running -
port
- The port where the service is listening -
service
- The name of the service -
delay
- The delay in seconds between retries -
timeout
- The timeout for a connection to be considered failed
Example
abiquo_wait_for_port "cassandra" do
host "localhost"
port 9160
delay 10
timeout 5
action :wait
end
Usage
The cookbook is pretty straightforwatd to use. Just set the node['abiquo']['profile']
attribute
according to the profile you want to install or upgrade and and include one of the following recipes
in the run list:
-
recipe[abiquo]
- To perform an installation from scratch -
recipe[abiquo::upgrade]
- To upgrade an existing installation
The available profiles are: monolithic
, remoteservices
, server
, v2v
, kvm
and monitoring
.
When installing the Abiquo Monolithic profile, you may also want to set the node['abiquo']['certificate']
properties so the right certificate is used or a self-signed one is generated. You can also use it together
with the hostname cookbook to make sure the node will have it properly configured.
Testing
In order to test the cookbook you will need to install Vagrant and VirtualBox.
Once installed you can run the unit and integration tests as follows:
bundle install
bundle exec rake # Run the unit and style tests
bundle exec rake kitchen # Run the integration tests
The tests and Gemfile have been developed using Ruby 2.1.5, and that is the recommended Ruby version to use to run the tests.
Other versions may cause conflicts with the versions of the gems Bundler will install.
License and Authors
- Author:: Ignasi Barrera (ignasi.barrera@abiquo.com)
- Author:: Marc Cirauqui (marc.cirauqui@abiquo.com)
Copyright:: 2014, Abiquo
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Dependent cookbooks
apache2 ~> 3.1.0 |
cassandra-dse ~> 4.1.0 |
iptables ~> 2.0.1 |
java ~> 1.39.0 |
java-management ~> 1.0.3 |
selinux ~> 0.9.0 |
ssl_certificate ~> 1.11.0 |
yum ~> 3.8.2 |
Contingent cookbooks
There are no cookbooks that are contingent upon this one.
abiquo CHANGELOG
0.7.2
- Create the monitoring schema when installing the monitoring nodes
0.7.1
- Cookbook metadata fixes
0.7.0
- Install the websockify package for VM remote access.
- Configure an Abiquo user in RabbitMQ
- Added the EPEL repository.
- Configured resources to be idempotent and avoid unwanted restarts.
- Configure a generic recipe to manage teh Abiquo Tomcat service.
- Better management for SSL certificates.
- Remove the need for the ark cookbook.
- Monitoring nodes can be upgraded
- Install Watchtower services in the monitoring node
0.6.0
- Added custom firewall templates for each profile.
- General recipe refactor to include the 'server' and 'v2v' profiles.
- Created a Kitchen suite to use nightly build branches.
0.5.0
- Configured the firewall in the kvm profile.
- Upgrade the database using the abiquo-liquibase script.
- Added integration tests with ServerSpec.
- Added a recipe to install a monitoring node.
- Upgraded base repositories to 3.6.
0.4.0
- Use the rpm signing keys from the abiquo-release-ee package.
0.3.3
- Removed the start, stop and update recipes.
- Changed the upgrade recipe to also upgrade the database.
- Added database configuration attributes.
0.3.2
- Added the abiquo-updates yum repository.
- Configured the rpm GPG sign keys that are not present in the abiquo-release-ee package.
- Fixed encofing in the UI configuration file.
0.3.1
- Fixed the NFS resource.
0.3.0
- Added support for Abiquo 3.3.
0.2.1
- Install Java and RabbitMQ from the Abiquo repositories.
- Added all missing signatures to the repository configuration.
- Configured the cookbook to install Abiquo 3.3.
0.2.0
- Support Java 8.
- Support using JCE unlimited strength encryption policies.
- Allow customization of the RabbitMQ and Redis properties.
- Dropped support to configure the Abiquo Tomcat in jpda mode.
- Redis is installed from the Abiquo packages.
0.1.0
- Initial release. Support for Monolithic installations from scratch and platform upgrades using nightly builds.
Foodcritic Metric
0.7.2 passed this metric
0.7.2 passed this metric