cookbook 'dokku', '= 0.2.0'
dokku (5) Versions 0.2.0 Follow3
Manages a dokku install.
cookbook 'dokku', '= 0.2.0', :supermarket
knife supermarket install dokku
knife supermarket download dokku
chef-dokku
Manages a dokku installation, allowing
configuration of application's environment variables,
installation of plugins and
management of ssh keys.
Usage
Include the bootstrap
recipe in your run list to have dokku installed/updated
during chef runs.
Attributes
These attributes are under the node['dokku']
namespace.
Attribute | Description | Type | Default |
---|---|---|---|
root | dokku's home directory | String | /home/dokku |
domain | Domain name to write to ['dokku']['root]'/VHOST
|
String | nil (node['fqdn'] will be used) |
ssh_keys | SSH keys that can push to dokku | Hash |
{} see SSH Keys
|
plugins | Plugins to install | Hash with plugin name as key and GitHub repository URL as value |
{} see Plugins
|
plugin_path | Directory where plugins are installed | String | /var/lib/dokku/plugins |
apps | App environment settings to populate | Hash |
{} see Apps
|
git_repository | The git repository for the base dokku code | String | https://github.com/progrium/dokku.git |
git_revision | The git revision to check out from git_repository
|
String | v0.2.0 |
Configuration
While this cookbook will be able to provide you with a working dokku installation,
there is some configuration you will likely want to do first:
SSH Keys
This is a required step to getting dokku working. You will want to set
node['dokku']['ssh_keys']
to a hash of the following structure:
default['dokku']['ssh_keys'] = {
'awesome_user' => 'awesome_users_pubkey',
'superb_user' => 'superb_users_pubkey'
}
The ssh_keys
recipe will handle
setting up the keys for dokku
Apps
Pre-configured applications. These attributes are used to configure environment
variables or remove an app:
default['dokku']['apps'] = {
'cool_app' => {
'env' => {
'ENV_VAR' => 'ENV_VAR_VALUE',
'ENV_VAR2' => 'ENV_VAR2_VALUE'
}
}
}
Plugins
You will likely want to install plugins to expand the functionality of your
dokku installation. See the dokku wiki page
for a list of available plugins.
Plugins are defined on the node['dokku']['plugins']
attribute:
default['dokku']['plugins'] = {
'plugin_name' => 'plugin_repository_url',
# For example:
'postgresql' => 'https://github.com/Kloadut/dokku-pg-plugin'
}
Applications Attributes
These attributes are under the node['dokku']['apps']['YOUR_APP_NAME']
namespace.
Attribute | Description | Type | Default |
---|---|---|---|
env | Application's environment variables | Hash | nil |
remove | Whether the application should be removed | Boolean | nil |
Sync attributes
These attributes are under the node['dokku']['sync']
namespace. They control
whether remote code bases will be updated on chef runs
Attribute | Description | Type | Default |
---|---|---|---|
base | Whether the dokku codebase will be synced with the remote repository | Boolean | true |
plugins | Whether the dokku plugins will be synced with their remote repositories | Boolean | true |
dependencies | Whether the sshcommand and pluginhook dependencies will be updated from their remotes | Boolean | true |
Build Stack attributes
These attributes are under the node['dokku']['buildstack']
namespace. They
correspond to the buildstep that is
used by dokku.
Attribute | Description | Type | Default |
---|---|---|---|
image_name | The name of the image to use when importing into Docker | String | progrium/buildstep |
use_prebuilt | Whether to use the prebuilt image or build off the git repository | Boolean | true |
stack_url | The url to the buildstep git repository | String | github.com/progrium/buildstep |
prebuilt_url | The url to the prebuild docker image for the buildstep | String | https://s3.amazonaws.com/progrium-dokku/progrium_buildstep_79cf6805cf.tgz |
PluginHook Attributes
These attributes are under the node['dokku']['pluginhook']
namespace.
Attribute | Description | Type | Default |
---|---|---|---|
src_url | The source url for the pluginhook .deb file | String | https://s3.amazonaws.com/progrium-pluginhook/pluginhook_0.1.0_amd64.deb |
filename | The pluginhook .deb file name | String | pluginhook_0.1.0_amd64.deb |
checksum | The SHA-256 checksum for the pluginhook .deb file | String | 26a790070ee0c34fd4c53b24aabeb92778faed4004110c480c13b48608545fe5 |
Recipes
-
recipe[dokku]
- Noop. Will be used to include LWRPs in the future -
recipe[dokku::bootstrap]
- A chef version ofbootstrap.sh
. Include this recipe to have dokku installed/updated by chef -
recipe[dokku::install]
- Clones/checks out the dokku git repository and copies the required files viamake copyfiles
-
recipe[dokku::buildstack]
- Builds/imports the dokku buildstep docker image. Seenode['dokku']['buildstack']['use_prebuilt']
to set which buildstep is imported
Testing and Development
Vagrant
Here's how you can quickly get testing or developing against the cookbook thanks
to Vagrant.
vagrant plugin install vagrant-omnibus
git clone git://github.com/fgrehm/chef-dokku.git
cd chef-dokku
bundle install
bundle exec berks install -p vendor/cookbooks
vagrant up
You can then SSH into the running VM using the vagrant ssh
command.
The VM can easily be stopped and deleted with the vagrant destroy
command.
Please see the official Vagrant documentation
for a more in depth explanation of available commands.
Roadmap
- Convert things like ssh keys, app env, etc to LWPRs w/ Chefspec v3 matchers
- Reduce rewritten/overridden areas of the bootstrap process to better keep up with dokku's rapid development
- Plugin removal
- Use dokku app removal process
- Support dokku addons
Dependent cookbooks
apt >= 0.0.0 |
git >= 0.0.0 |
build-essential >= 0.0.0 |
nginx >= 0.0.0 |
docker >= 0.0.0 |
user >= 0.0.0 |
sudo >= 0.0.0 |
Contingent cookbooks
There are no cookbooks that are contingent upon this one.