xlrelease

Table of Contents

  1. Overview
  2. Module Description
  3. Setup
  4. Usage
  5. Reference
  6. Limitations
  7. Development

Overview

A module that takes care of the installation and configuration regarding XL-Release by Xebialabs

Module Description

This Module is geared toward the installation and configuration of Xebialabs XL-Release. It will take care of the installation of xl-release on linux based systems as well as doing a lot of the standard configuration required to setup a production ready instance of xl-release.

Setup

Setup Requirements

This module requires the following:

  • pluginsync enabled
  • module puppetlabs-stdlib installed
  • module puppetlabs-concat installed

Beginning with [puppet-xlrelease]

Usage

basic installation

class{xlrelease:
    install_java => true,
    install_type: 'download'
    xlr_download_user: '<your download user>'
    xlr_download_password: '<your download password'
    xlr_licsource: 'https://dist.xebialabs.com/customer/licenses/download/xl-release-license.lic'
 }

this will install a basic instance of xl-release at /opt/xl-release/xl-release-server which will respond on port 5516.

adding configuration

adding a xl-deploy server to the configuration

xlrelease_xld_server{'default':
     properties => { 'url' => 'http://your.xld.instance:4516/<context_root>',
                     'username' => 'your xld user',
                     'password' => 'your xld password' 
                    }
}          

adding a jenkins server to the configuration

xlrelease_config_item{'jenkins_default':
    type => 'jenkins.Server',
    properties => { username: "jenkins user name"
                    title: "title in xlr"
                    proxyHost: <optional proxy host .. null for no proxy>
                    proxyPort: <optional proxy port .. null for no port>
                    password: "jenkins user password"
                    url: 'http://your_jenkins_host_goes_here:and_the_port_here'
    }
}

adding a git repo to the configuration

xlrelease_config_item{'your_git_repo':
    type => 'git.Repository',
    properties => { username: "git user name"
                    title: "title in xlr"
                    password: "git user password"
                    url: 'http://url.to.git/repo'
    }
}

adding a xl-deploy server to the configuration from a different system using puppet this code could be used in a manifest when installing a xl-deploy server using puppet

xlrelease_xld_server{'default':
         properties => { 'url' => "http://${fqdn}:4516/<context_root>",
                         'username' => 'your xld user',
                         'password' => 'your xld password' 
                        }
         rest_url => 'http://user:password@your.xl-release.com:5516/<something>'
    } 

adding a jenkins server to the configuration from a different system using puppet this code could be used in a manifest when installing a jenkins server using puppet

xlrelease_config_item{'jenkins_default':
    type => 'jenkins.Server',
    rest_url => 'http://user:password@your.xl-release.com:5516/<something>',
    properties => { username: "jenkins user name"
                    title: "title in xlr"
                    proxyHost: <optional proxy host .. null for no proxy>
                    proxyPort: <optional proxy port .. null for no port>
                    password: "jenkins user password"
                    url: 'http://your_jenkins_host_goes_here:and_the_port_here'
                    }
}

adding a git repo to the configuration form a different system using puppet

xlrelease_config_item{'your_git_repo':
    type => 'git.Repository',
    rest_url => 'http://user:password@your.xl-release.com:5516/<something>',
    properties => { username: "git user name"
                    title: "title in xlr"
                    password: "git user password"
                    url: 'http://url.to.git/repo'
                   }
}

using hiera

basic installation

---
  xlrelease::install_java: true 
  xlrelease::install_type: 'download'
  xlrelease::xlr_download_user: 'get one'
  xlrelease::xlr_download_password: 'not telling you that'
  xlrelease::xlr_licsource: 'https://dist.xebialabs.com/customer/licenses/download/xl-release-license.lic'

adding a xl-deploy server to the configuration the module commes equiped with a hash parameters for use with hiera

---
  xlrelease::xlr_xldeploy_hash:
      'default':
        properties:
         url: "http://your.xld.instance:4516/<context_root>"
         username: "your xld user"
         password: "your xld password"

adding a jenkins server and a git repo to the configuration

---
  xlrelease::xlr_config_item_hash:
      'jenkins1':
        type: 'jenkins.Server'
        title: 'jenkins1'
        properties:
          username: "jenkins user"
          title: "title in xlr"
          proxyHost:  <optional proxy host .. null for no proxy>
          proxyPort:  <optional proxy host .. null for no proxy>
          password: "jenkins user password"
          url: 'http://your_jenkins_host_goes_here:and_the_port_here'
      'git_test1':
         type: 'git.Repository'
         title: 'git_test1'
         properties:
           username: 'git user name'
           password: 'title in xlr'
           url: 'http://url.to.git/repo'
           title: 'title in xlr'

Reference

Public classes

xlrelease

os_user
the user that will be used to run xlr and installed on the os by the module (unless it's already there)
default: xlrelease
os_group
the group that will be used to run xlr and installed on the os by the module (unless it's already there)
default: xlrelease
tmp_dir
specifies a temporary file storage space for the module to store downloaded stuff
default: /var/tmp
xlr_version
specifies the version of xlr to install
default : 4.5.1
xlr_basedir
specifies the base installation directory for xlr
default: /opt/xl-release
xlr_serverhome
specifies the xlrelease server home directory
default: /opt/xl-release/xl-release-server
xlr_licsource
specifies where the xl-release license can be obtained
default: no help there .. sorry
xlr_repopath
specifies the path to the xlr repository on the filesystem
either specify a full path prefixed with file:/// or a directory relative to the server home 
default: repository
xlr_initrepo
specifies if we should initialize the repo upon installation
default: true
xlr_http_port
specifies the port xlr will respond to 
default: 5516
xlr_http_bind_address
specifies the address the instance binds to 
default: 0.0.0.0 (listens to all incomming traffic)
xlr_http_context_root
specifies the context root xlr will respond on 
default: /
xlr_importable_packages_path
specifies the path to the imporatble packages 
either specify a full path prefixed with file:/// or a directory relative to the server home 
default: importablePackages
xlr_ssl
specifies if the module should setup ssl traffic to the server
default: false
xlr_download_user
 specifies the xlr download user account (can be obtaind from xebialabs)
 default: undef
xlr_download_password
 specifies the xlr download user password (can be obtained form http://www.xebialabs.com)
 default: undef
xlr_download_proxy_url
 specifies a proxy url if one is needed to obtain a direct internet connection
 default: undef
xlr_rest_user
 specifies the restuser to be used for interfacing from the module to the xlr instance
 default: admin
xlr_rest_password
 specifies the restusers password
 default: xebialabs
xlr_admin_password
 specifies the admin password xlr will be setup with
 default: xebialabs
java_home
 specifies the java_home which will be used to run xlr
 default: 'RedHat' : '/usr/lib/jvm/jre-1.7.0-openjdk.x86_64'
          'Debian' : '/usr/lib/jvm/java-7-openjdk-amd64'
install_java
 specifies if java should be installed as part of this modules duties
install_type
 specifies the type of installation method where gonna use: 
 default: download
 choices: 
    download: download source from xebialabs.com (preffered)
    puppetfiles: get the source from a specified puppet files location
puppetfiles_xlrelease_source
 specifies the source location of the xlr installation for use with a puppetfiles installation type
custom_download_server_url
 specify a custom download url (other than the standard xebialabs one provided by the module)
xlr_xldeploy_hash
 allows for the specification of multiple xl-deploy instances in a hash format (see instructions above)
xlr_config_item_hash
 allows for the specifiaction of multiple xl-release configuration items in a hash format (see instructions above) 

types and provider pairs

xlrelease_xld_server

this resource can be used to configure a xl-deploy instance in a xlr instance

type

the type of ci to configure in xlr (no point in changing this on this resource !!!!) default : 'xlrelease.DeployitServerDefinition'

properties

the properties the should be configured in xld 'url': the url to reach the xldeploy server on 'username': the username of the xldeploy server 'password': the password to go along with the username

rest_url

a url to reach the external xlr server on (which is optional) use this if u are using this resource from a different server other than the xlr server default: undef

xlrelease_config_item

this resource can be used to influence a configuration item in an xlr instance

type

the type of ci to configure in xlr posiblities: jenkins.Server, git.Repository (amongst others ... this has to be valid in xlr)

properties

the properties the should be configured in xld (dependent on the type)

rest_url

a url to reach the external xlr server on (which is optional) use this if u are using this resource from a different server other than the xlr server default: undef

Limitations

os compatibility

  • Debian (all recent versions)
  • Ubuntu (all recent versions) 12.02 and 14.02 supported
  • Redhat (6&7 supported)
  • CentOS (6&7 supported)

xlrelease compatibility

versions 4.0.13 and 4.5.1 tested

Development

  • No real rules yet, but a test set will be setup pretty soon.
  • Pull requests will be evaluated and if they make sense they will be incorporated in the module

Release Notes/Contributors/Etc Optional

Maintainers

  • Wian Vos

Contributors

  • Wian Vos

** help wanted **