GithubHelp home page GithubHelp logo

markruys / puppet-composer Goto Github PK

View Code? Open in Web Editor NEW

This project forked from willdurand/puppet-composer

0.0 1.0 0.0 117 KB

Puppet module to install Composer.

Home Page: http://forge.puppetlabs.com/willdurand/composer

License: MIT License

Ruby 65.96% Puppet 33.44% Nix 0.60%

puppet-composer's Introduction

puppet-composer

Build Status

This module installs Composer, a dependency manager for PHP.

Installation

Using the Puppet Module Tool, install the willdurand/composer by running the following command:

puppet module install willdurand/composer

Otherwise, clone this repository and make sure to install the proper dependencies (puppetlabs-stdlib, puppetlabs-cron_core):

git clone git://github.com/willdurand/puppet-composer.git modules/composer

puppet-wget module

The puppet-wget module is required until version 1.1.x, but dropped in version 1.2.x. For further notes about this module, please have a look at the 1.1 docs.

In 1.2 the puppetlabs-stdlib dependency has been added in order to gain lots of puppet features located in this module and improve the type validation in the manifests.

Installing dependencies locally

In order to avoid messing up your global gem installation and installing the ruby dependencies during the dev phase, it's possible to install the dependencies in a local path which is ignored by .gitignore by default:

bundle install --path vendor/bundle

Usage

Install composer through puppet

Include the composer class:

include composer

You can specify the command name you want to get, and the target directory (aka where to install Composer):

class { '::composer':
  command_name => 'composer',
  target_dir   => '/usr/local/bin'
}

You can also auto update composer by using the auto_update parameter. This will update Composer only when you will run Puppet.

class { '::composer':
  auto_update => true
}

You can specify a particular user that will be the owner of the Composer executable:

class { '::composer':
  user => 'foo',
}

As the user is configurable, the group is changeable, too:

class { '::composer':
  group => 'owner_group_name',
}

It is also possible to specify a custom composer version:

class { '::composer':
  version => '1.0.0-alpha11',
}

When having an infrastructure with slower connections, it is possible to increase the timeout in order to avoid running into errors because of a slow connection:

class { '::composer':
  download_timeout => '100',
}

Repairing duplicated packages

As described in #44 in several cases it's possible that the catalogue crashes because of duplicate package declarations.

In order to skip the installation of wget from this module, you can use the build_deps argument:

class { '::composer':
  build_deps => false,
}

Global composer configs

One feature of composer are global configuration parameters. There are some important parameters like oauth_token for the GitHub API that should be configured through composer.

::composer::config { 'composer-vagrant-config':
  ensure  => present,
  user    => 'vagrant',
  configs => {
    'github-oauth' => {
      'github.com' => 'token'
    },
    'process-timeout' => 500,
    'http-basic' => {
      'github.com' => ['username', 'password']
    },
  },
}

And removing single params is also possible:

::composer::config { 'remove-platform':
  ensure  => absent,
  configs => ['process-timeout', 'github-oauth.github.com', 'http-basic.github.com'],
  user    => 'vagrant',
}

Note that the config items must be structured like when using the CLI. This means that when having a gitlab-oauth entry for site gitlab.org then the following key should be removed:

gitlab-oauth.gitlab.org

Furthermore it is possible to configure the home_dir parameter as some users might use another one:

::composer::config { 'composer-vagrant-config':
  ensure   => present,
  user     => 'vagrant',
  home_dir => '/custom/home/dir',
}

Clear cache

The composer dependency resolver is quite complex and there are issues where the cache hides actual conflicts that make reproduction of such issues a lot harder. In order to keep the cache clean, it is possible to clear the cache via puppet:

::composer::clear_cache { 'clear-cache-for-user':
  exec_user => 'user',
}

As the home directory is configurable, it is possible to adjust the homedir to this resource:

::composer::clear_cache { 'clear-cache-for-user':
  home_dir => '/custom/home/dir',
  exec_user     => 'user',
}

Handle dependency order

Since this module does only handler the composer installation, but doesn't care about the php setup, you might run into errors due to a missing php instance. This can be fixed by using the require parameter:

class { '::composer':
  require => Package['php5'],
}

This will puppet tell to wait with the composer install process until the php package is installed.

Running the tests

Install the dependencies using Bundler:

bundle install

Run the following command:

bundle exec rake spec

Development with nix

If you're using nix as dependency manager, you can create a custom shell which contains all dependencies declared in Gemfile.lock by running nix-shell in the root directory.

License

puppet-composer is released under the MIT License. See the bundled LICENSE file for details.

puppet-composer's People

Contributors

ma27 avatar willdurand avatar chongkan avatar jgrammen-agilitypr avatar binford2k avatar caseyfw avatar brownoxford avatar erikhensema avatar fraenki avatar lodzo avatar markruys avatar mattbostock avatar loosi avatar hfm avatar gajdaw avatar cdoublev avatar shottrue avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.