cookbook 'gocd', '= 1.3.0'
gocd (10) Versions 1.3.0 Follow3
Installs/Configures Go servers and agents
cookbook 'gocd', '= 1.3.0', :supermarket
knife supermarket install gocd
knife supermarket download gocd
GoCD Cookbook
This cookbook is here to help you setup Go servers and agents in an automated way.
Supported Platforms
This cookbook has been tested on the following platforms:
- Ubuntu >= 12.04
- Debian
- CentOS >= 6
- RedHat >= 6
- Windows - no support yet, but PRs welcome :)
1.0 release notes
This cookbook has gone major rewrite and has little to do with pre-1.0
versions.
If you have been using go-cookbook previously then please note that:
- cookbook has been renamed to
gocd
, just like root namespace of attributes. - Windows support in on best-effort basis
Java
Please note that java 8 is recommended to run Go server and agents. This cookbook
sets node['java']['jdk_version']
at force_default
level but it may not work properly
when you include java
in node run_list before gocd
cookbook. The safest approach
is to set java version in node attributes (in a role or environment).
Install method
Repository
By default installation source is done from apt or yum repositories from official sources at http://www.go.cd/download/.
The apt repository can be overriden by changing any these attributes:
node['gocd']['repository']['apt']['uri'] = 'https://download.go.cd/'
node['gocd']['repository']['apt']['components'] = [ '/' ]
node['gocd']['repository']['apt']['distribution'] = ''
node['gocd']['repository']['apt']['keyserver'] = 'pgp.mit.edu'
node['gocd']['repository']['apt']['key'] = '0xd8843f288816c449'
The yum repository can be overriden by changing any these attributes:
node['gocd']['repository']['yum']['baseurl'] = 'https://download.go.cd'
node['gocd']['repository']['yum']['gpgcheck'] = true
node['gocd']['repository']['yum']['gpgkey'] = 'https://download.go.cd/GOCD-GPG-KEY.asc'
Experimental channel
By default Go cookbook installs latest stable version.
You can install gocd from experimental channel by setting
node['gocd']['use_experimental'] = true
From remote file
Cookbook can skip adding repository and install Go server or agent by downloading a remote file and install it directly via dpkg
or rpm
.
Change install method to 'package_file':
node['gocd']['install_method'] = 'package_file'
And assign base url where packages are available for download
node['gocd']['package_file']['baseurl'] = 'http://my/custom/url'
The final download URL of file is built based on platform and node['gocd']['version']
.
E.g. http://my/custom/url/go-agent-15.2.0-2520.deb
GoCD Server
gocd::server will install and start a GoCD server.
Go Server attributes
The cookbook provides the following attributes to configure the GoCD server:
-
node['gocd']['server']['http_port']
- The server HTTP port. Defaults to8153
. -
node['gocd']['server']['https_port']
- The server HTTPS port. Defaults to8154
. -
node['gocd']['server']['max_mem']
- The server maximum JVM heap space. Defaults to2048m
. -
node['gocd']['server']['min_mem']
- The server mimimum JVM heap space. Defaults to1024m
. -
node['gocd']['server']['max_perm_gen']
- The server maximum JVM permgen space. Defaults to400m
. -
node['gocd']['server']['work_dir']
- The server working directory. Defaults to/var/lib/go-server
.
Chef cookbook waits for server to become responsive after restarting service.
These attributes can be used to tune it:
-
node['gocd']['server']['wait_up']['retry_delay']
- pause in seconds between failed attempts. -
node['gocd']['server']['wait_up']['retries']
- number of attempts before giving up. Set 0 to disable waiting at all. Defaults to 10
GoCD Agent
gocd::agent
will install and start a GoCD agent.
You can change the number of agents in node['gocd']['agent']['count']
- first
agent is called go-agent
, next ones are go-agent-#
.
gocd::agent
recipe uses GoCD agent LWRP internally.
Go Agent attributes
The cookbook provides the following attributes to configure the GoCD agent:
-
node['gocd']['agent']['go_server_url']
- URL of Go server that agent should connect to. It must start withhttps://
and end with/go
. For examplehttps://localhost:8154/go
. -
node['gocd']['agent']['daemon']
- Whether the agent should be daemonized. Defaults totrue
. -
node['gocd']['agent']['vnc']['enabled']
- Whether the agent should start with VNC. (UsesDISPLAY=:3
). Defaults tofalse
. -
node['gocd']['agent']['autoregister']['key']
- The agent autoregister key. If left alone, will be auto-detected. Defaults tonil
. -
node['gocd']['agent']['autoregister']['environments']
- The environments for the agent. Defaults to[]
. -
node['gocd']['agent']['autoregister']['resources']
- The resources for the agent. Defaults to[]
. -
node['gocd']['agent']['autoregister']['hostname']
- The agent autoregister hostname. Defaults tonode['fqdn']
. -
node['gocd']['agent']['server_search_query']
- The chef search query to find a server node. Defaults tochef_environment:#{node.chef_environment} AND recipes:gocd\\:\\:server
.
Beta
Attributes for elastic agents:
node['gocd']['agent']['elastic']['plugin_id']
node['gocd']['agent']['elastic']['agent_id']
Golang agent support
By default node['gocd']['agent']['type']
is set to java
. Set it to golang
to install GoCD agent written in Go.
Note that this agent has quite a few limitations.
Depreciated
Please use node['gocd']['agent']['go_server_url']
instead of:
-
node['gocd']['agent']['go_server_host']
- The hostname of the go server (if left alone, will be auto-detected). Defaults tonil
. -
node['gocd']['agent']['go_server_port']
- The port of the go server. Defaults to8153
.
GoCD Agent LWRP (currently only works on linux)
If agent recipe + attributes is not flexible enough or if you prefer chef resources
then you can add go-agent services with gocd_agent
LWRP.
Example agents
All resource attributes fall back to node attributes so agent can be defined
in just one line:
gocd_agent 'my-agent'
It would create my-agent
service and if all node values are correct then it
would also autoregister.
A custom agent may look like this:
ruby
gocd_agent 'my-go-agent' do
go_server_host 'go.example.com'
go_server_port 80
daemon true
vnc true
autoregister_key 'bla-key'
autoregister_hostname 'my-lwrp-agent'
environments 'production'
resources ['java-8','ruby-2.2']
workspace '/mnt/big_drive'
end
GoCD autoregister file resource
If you want to setup agents your-way then this resource is helpful to only
generate a valid autoregister.properties
file:
Example use:
ruby
gocd_agent_autoregister_file '/var/mygo/autoregister.properties' do
autoregister_key 'bla-key'
autoregister_hostname 'mygo-agent'
environments 'stage'
resources ['java-8','ruby']
end
Can be used to prepare elastic agents too:
ruby
gocd_agent_autoregister_file '/var/elastic/autoregister.properties' do
autoregister_key 'some-key'
autoregister_hostname 'elastic-agent'
environments 'testing'
resources ['java-8']
elastic_agent_id 'agent-id'
elastic_agent_plugin_id 'elastic-agent-plugin-id'
end
GoCD plugin LWRP
You can install Go server plugins with gocd_plugin
LWRP like this
include_recipe 'gocd::server' gocd_plugin 'github-pr-status' do plugin_uri 'https://github.com/gocd-contrib/gocd-build-status-notifier/releases/download/1.1/github-pr-status-1.1.jar' end
Server Specification
When using the cookbook please refer to the server specification section of the go.cd website
License
Apache License, Version 2.0
Dependent cookbooks
apt >= 3.0.0 |
java >= 0.0.0 |
yum >= 0.0.0 |
windows >= 0.0.0 |
Contingent cookbooks
There are no cookbooks that are contingent upon this one.
1.3.0
- rewritten chef resources to use new custom resource syntax
- updated agent startup config files to use
GO_SERVER_URL
instead of host and port - by default install java 8
- isolated gocd_agent_autoregister_file resource
- added golang agent support
- use apt cookbook >= 3.0
1.2.0
- Improved version handling and installing on windows #63 #67
- fixed autoregister value -
daemon
#88 - added maintainer and maintainer_email to metadata, #84
1.1.1
- Default to using latest version, when using a platform that supports it
1.1.0
- Improve support for installing GoCD on windows
- Use https://download.go.cd for all repositories
1.0.0
Rewrite from scratch.
- GH-26 now cookbook defaults to installing latest stable
- GH-48 changed root of attributes to
gocd
- GH-50 - installing from non-official sources - custom package file or custom apt repository.
- GH-56 - now agents can be provisioned with
gocd_agent
resource - GH-52 - added lots of tests
- GH-59 - fixed
- added small
gocd_plugin
resource which can be used to install Go server plugins.
Collaborator Number Metric
1.3.0 failed this metric
Failure: Cookbook has 1 collaborators. A cookbook must have at least 2 collaborators to pass this metric.
Foodcritic Metric
1.3.0 failed this metric
FC009: Resource attribute not recognised: /tmp/bd48e667c1b12d267a0e269f/gocd/recipes/agent_windows_install.rb:21
FC009: Resource attribute not recognised: /tmp/bd48e667c1b12d267a0e269f/gocd/recipes/server_windows_install.rb:13
FC019: Access node attributes in a consistent manner: /tmp/bd48e667c1b12d267a0e269f/gocd/recipes/java.rb:2
FC023: Prefer conditional attributes: /tmp/bd48e667c1b12d267a0e269f/gocd/resources/agent.rb:25
FC064: Ensure issues_url is set in metadata: /tmp/bd48e667c1b12d267a0e269f/gocd/metadata.rb:1
FC065: Ensure source_url is set in metadata: /tmp/bd48e667c1b12d267a0e269f/gocd/metadata.rb:1
1.3.0 failed this metric
1.3.0 failed this metric
FC009: Resource attribute not recognised: /tmp/bd48e667c1b12d267a0e269f/gocd/recipes/agent_windows_install.rb:21
FC009: Resource attribute not recognised: /tmp/bd48e667c1b12d267a0e269f/gocd/recipes/server_windows_install.rb:13
FC019: Access node attributes in a consistent manner: /tmp/bd48e667c1b12d267a0e269f/gocd/recipes/java.rb:2
FC023: Prefer conditional attributes: /tmp/bd48e667c1b12d267a0e269f/gocd/resources/agent.rb:25
FC064: Ensure issues_url is set in metadata: /tmp/bd48e667c1b12d267a0e269f/gocd/metadata.rb:1
FC065: Ensure source_url is set in metadata: /tmp/bd48e667c1b12d267a0e269f/gocd/metadata.rb:1