Skip to content

Latest commit

 

History

History
79 lines (61 loc) · 2.5 KB

README.md

File metadata and controls

79 lines (61 loc) · 2.5 KB

vcsdeploy

Table of Contents

Module Description

The vcsdeploy module lets you use Puppet to deploy an application from a git repository.

This vcsdeploy module is a wrapper around vcsrepo which tracks deployment steps and retries them on failure on subsequent agent runs, until it succeeds.

Rationale

This module allows to escape the usual trap with vcsrepo, where you notify resources on repository update, and these resources fail. On the next puppet run, the repository will be up-to-date and the failed operations are not retried.

Example :

vcsrepo { '/path/to/application':
  [...],
}
~> exec { '/path/to/application/scripts/bootstrap':
  refreshonly => true,
}

If you use this pattern, the exec resource will run on first fetch and on updates… but if /path/to/application/scripts/bootstrap fails during its execution, only the first catalog apply will failed.

Using vcsdeploy:

vcsdeploy {  '/path/to/application':
  [...],
  after_fetch_command => '/path/to/application/scripts/bootstrap',
}

If /path/to/application/scripts/bootstrap fails, it will be retried on each puppet agent run until successful.

Usage

With a simple command to run after fetch/update

vcsdeploy { '/path/to/application',
  source              => 'git://example.com/repo.git',
  user                => 'deploy_user',
  after_fetch_command => '/path/to/application/scripts/after-fetch',
}

With additonal resources to realize after fetch/update

vcsdeploy { '/path/to/application':
  source                => 'git://example.com/repo.git',
  user                  => 'deploy_user',
  after_fetch_command   => '/path/to/application/scripts/after-fetch',
  after_fetch_resources => [
    File['/path/to/application/tmp'],
    Exec['/path/to/application/scripts/apply-db-migrations'],
  ]
}

file { '/path/to/application/tmp':
  ensure => directory,
  user   => 'application_user',
}

exec { '/path/to/application/scripts/apply-db-migrations',
  user        => 'application_user',
  refreshonly => true,
}