vcsdeploy

pdk
Deploy an application from a repository and run command after fetch or update

Opus Codium

opuscodium

582 downloads

582 latest version

4.8 quality score

Version information

  • 0.3.0 (latest)
released Jan 11th 2021
This version is compatible with:
  • Puppet Enterprise 2021.2.x, 2021.1.x, 2021.0.x, 2019.8.x, 2019.7.x, 2019.5.x, 2019.4.x, 2019.3.x, 2019.2.x, 2019.1.x, 2019.0.x, 2018.1.x, 2017.3.x
  • Puppet >= 5.0.0 < 8.0.0
  • Debian
    ,
    Ubuntu

Start using this module

Documentation

opuscodium/vcsdeploy — version 0.3.0 Jan 11th 2021

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,
}