Giter Site home page Giter Site logo

jeansch / puppet-python Goto Github PK

View Code? Open in Web Editor NEW

This project forked from voxpupuli/puppet-python

0.0 2.0 0.0 253 KB

Puppet module for installing and managing Python, pip, virtualenvs and Gunicorn virtual hosts.

Home Page: https://forge.puppetlabs.com/stankevich/python

License: Apache License 2.0

puppet-python's Introduction

puppet-python Build Status

Puppet module for installing and managing python, pip, virtualenvs and Gunicorn virtual hosts.

Version 1.1.x Notes

Version 1.1.x makes several fundamental changes to the core of this module, adding some additional features, improving performance and making operations more robust in general.

Please note that several changes have been made in v1.1.x which make manifests incompatible with the previous version. However, modifying your manifests to suit is trivial. Please see the notes below.

Currently, the changes you need to make are as follows:

  • All pip definitions MUST include the owner field which specifies which user owns the virtualenv that packages will be installed in. Adding this greatly improves performance and efficiency of this module.
  • You must explicitly specify pip => true in the python class if you want pip installed. As such, the pip package is now independent of the dev package and so one can exist without the other.

Installation

git submodule add https://github.com/stankevich/puppet-python.git /path/to/python

OR

puppet module install stankevich-python

Usage

python

Installs and manages python, python-pip, python-dev, python-virtualenv and Gunicorn.

version - Python version to install. Default: system default

pip - Install python-pip. Default: true

dev - Install python-dev. Default: false

virtualenv - Install python-virtualenv. Default: false

gunicorn - Install Gunicorn. Default: false

manage_gunicorn - Allow Installation / Removal of Gunicorn. Default: true

  class { 'python' :
    version    => 'system',
    pip        => true,
    dev        => true,
    virtualenv => true,
    gunicorn   => true,
  }

python::pip

Installs and manages packages from pip.

pkgname - the name of the package to install. Required.

ensure - present/latest/absent. Default: present

virtualenv - virtualenv to run pip in. Default: system (no virtualenv)

url - URL to install from. Default: none

owner - The owner of the virtualenv to ensure that packages are installed with the correct permissions (must be specified). Default: root

proxy - Proxy server to use for outbound connections. Default: none

environment - Additional environment variables required to install the packages. Default: none

egg - The egg name to use. Default: $name of the class, e.g. cx_Oracle

install_args - Array of additional flags to pass to pip during installaton. Default: none

uninstall_args - Array of additional flags to pass to pip during uninstall. Default: none

timeout - Timeout for the pip install command. Defaults to 1800.

  python::pip { 'cx_Oracle' :
    pkgname       => 'cx_Oracle',
    virtualenv    => '/var/www/project1',
    owner         => 'appuser',
    proxy         => 'http://proxy.domain.com:3128',
    environment   => 'ORACLE_HOME=/usr/lib/oracle/11.2/client64',
    install_args  => ['-e'],
    timeout       => 1800,
   }

python::requirements

Installs and manages Python packages from requirements file.

virtualenv - virtualenv to run pip in. Default: system-wide

proxy - Proxy server to use for outbound connections. Default: none

owner - The owner of the virtualenv to ensure that packages are installed with the correct permissions (must be specified). Default: root

src - The --src parameter to pip, used to specify where to install --editable resources; by default no --src parameter is passed to pip.

group - The group that was used to create the virtualenv. This is used to create the requirements file with correct permissions if it's not present already.

  python::requirements { '/var/www/project1/requirements.txt' :
    virtualenv => '/var/www/project1',
    proxy      => 'http://proxy.domain.com:3128',
    owner      => 'appuser',
    group      => 'apps',
  }

python::virtualenv

Creates Python virtualenv.

ensure - present/absent. Default: present

version - Python version to use. Default: system default

requirements - Path to pip requirements.txt file. Default: none

proxy - Proxy server to use for outbound connections. Default: none

systempkgs - Copy system site-packages into virtualenv. Default: don't

distribute - Include distribute in the virtualenv. Default: true

venv_dir - The location of the virtualenv if resource path not specified. Must be absolute path. Default: resource name

owner - Specify the owner of this virtualenv

group - Specify the group for this virtualenv

index - Base URL of Python package index. Default: none

cwd - The directory from which to run the "pip install" command. Default: undef

timeout - The maximum time in seconds the "pip install" command should take. Default: 1800

  python::virtualenv { '/var/www/project1' :
    ensure       => present,
    version      => 'system',
    requirements => '/var/www/project1/requirements.txt',
    proxy        => 'http://proxy.domain.com:3128',
    systempkgs   => true,
    distribute   => false,
    venv_dir     => '/home/appuser/virtualenvs',
    owner        => 'appuser',
    group        => 'apps',
    cwd          => '/var/www/project1',
    timeout      => 0,
  }

python::gunicorn

Manages Gunicorn virtual hosts.

ensure - present/absent. Default: present

virtualenv - Run in virtualenv, specify directory. Default: disabled

mode - Gunicorn mode. wsgi/django. Default: wsgi

dir - Application directory.

bind - Bind on: 'HOST', 'HOST:PORT', 'unix:PATH'. Default: unix:/tmp/gunicorn-$name.socket or unix:${virtualenv}/${name}.socket

environment - Set ENVIRONMENT variable. Default: none

appmodule - Set the application module name for gunicorn to load when not using Django. Default: app:app

osenv - Allows setting environment variables for the gunicorn service. Accepts a hash of 'key': 'value' pairs. Default: false

template - Which ERB template to use. Default: python/gunicorn.erb

  python::gunicorn { 'vhost' :
    ensure      => present,
    virtualenv  => '/var/www/project1',
    mode        => 'wsgi',
    dir         => '/var/www/project1/current',
    bind        => 'unix:/tmp/gunicorn.socket',
    environment => 'prod',
    appmodule   => 'app:app',
    osenv       => { 'DBHOST' => 'dbserver.example.com' },
    template    => 'python/gunicorn.erb',
  }

Authors

Sergey Stankevich Shiva Poudel Ashley Penney Marc Fournier Fotis Gimian

puppet-python's People

Contributors

adevore avatar codesplicer avatar daniellawrence avatar davideme avatar dreilly1982 avatar eshamow avatar fgimian avatar fpletz avatar fredrikt avatar freyes avatar galedragon avatar giavac avatar hakamadare avatar heartpunk avatar hjagodzinski avatar igalic avatar invernizzi avatar jamescarr avatar justquick avatar klumhru avatar mnaser avatar mwilliamson avatar poikilotherm avatar rayl avatar riton avatar salimane avatar saz avatar shivapoudel avatar stankevich avatar tbartelmess avatar

Watchers

 avatar  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.