Mercurial > repos > other > Puppet
view modules/python/REFERENCE.md @ 390:df5ad1612af7
Adapt configs to support Ubuntu
This is prep for running a VPS on a Mythic Beasts Raspberry Pi
* Switch paths where necessary
* Add optional modules that only apply on some OSes
* Change usernames and groups
* Don't do RPM-based stuff in Ubuntu
* Switch to using some of the new modules
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Mon, 03 Jan 2022 18:37:16 +0000 |
parents | 66c075c5f54a |
children | adf6fe9bbc17 |
line wrap: on
line source
# Reference <!-- DO NOT EDIT: This document was generated by Puppet Strings --> ## Table of Contents ### Classes #### Public Classes * [`python`](#python): Installs and manages python, python-dev and gunicorn. * [`python::pip::bootstrap`](#pythonpipbootstrap): allow to bootstrap pip when python is managed from other module #### Private Classes * `python::config`: Optionally installs the gunicorn service * `python::install`: Installs core python packages * `python::params`: The python Module default configuration settings. ### Defined types * [`python::dotfile`](#pythondotfile): Manages any python dotfiles with a simple config hash. * [`python::gunicorn`](#pythongunicorn): Manages Gunicorn virtual hosts. * [`python::pip`](#pythonpip): Installs and manages packages from pip. * [`python::pyvenv`](#pythonpyvenv): Create a Python3 virtualenv using pyvenv. * [`python::requirements`](#pythonrequirements): Installs and manages Python packages from requirements file. ### Data types * [`Python::Loglevel`](#pythonloglevel): A version type to match all valid loglevels for python * [`Python::Package::Ensure`](#pythonpackageensure): A version type to match all valid package ensures for python * [`Python::Provider`](#pythonprovider): A version type to match all valid provider for python * [`Python::Umask`](#pythonumask): A version type to match valid umask for python * [`Python::Venv::PipVersion`](#pythonvenvpipversion): A version type to ensure a specific Pip version in a virtual env. * [`Python::Version`](#pythonversion): A version type to match all valid versions for python ## Classes ### <a name="python"></a>`python` Installs and manages python, python-dev and gunicorn. #### Examples ##### install python from system python ```puppet class { 'python': version => 'system', pip => 'present', dev => 'present', gunicorn => 'present', } ``` ##### install python3 from scl repo ```puppet class { 'python' : ensure => 'present', version => 'rh-python36-python', dev => 'present', } ``` #### Parameters The following parameters are available in the `python` class: * [`ensure`](#ensure) * [`version`](#version) * [`pip`](#pip) * [`dev`](#dev) * [`gunicorn`](#gunicorn) * [`manage_gunicorn`](#manage_gunicorn) * [`provider`](#provider) * [`use_epel`](#use_epel) * [`manage_scl`](#manage_scl) * [`umask`](#umask) * [`manage_python_package`](#manage_python_package) * [`manage_pip_package`](#manage_pip_package) * [`gunicorn_package_name`](#gunicorn_package_name) * [`python_pips`](#python_pips) * [`python_pyvenvs`](#python_pyvenvs) * [`python_requirements`](#python_requirements) * [`python_dotfiles`](#python_dotfiles) * [`rhscl_use_public_repository`](#rhscl_use_public_repository) * [`anaconda_installer_url`](#anaconda_installer_url) * [`anaconda_install_path`](#anaconda_install_path) ##### <a name="ensure"></a>`ensure` Data type: `Python::Package::Ensure` Desired installation state for the Python package. Default value: `$python::params::ensure` ##### <a name="version"></a>`version` Data type: `Python::Version` Python version to install. Beware that valid values for this differ a) by the provider you choose and b) by the osfamily/operatingsystem you are using. Allowed values: - provider == pip: everything pip allows as a version after the 'python==' - else: 'system', 'pypy', 3/3.3/... - Be aware that 'system' usually means python 2.X. - 'pypy' actually lets us use pypy as python. - 3/3.3/... means you are going to install the python3/python3.3/... package, if available on your osfamily. Default value: `'3'` ##### <a name="pip"></a>`pip` Data type: `Python::Package::Ensure` Desired installation state for the python-pip package. Default value: `$python::params::pip` ##### <a name="dev"></a>`dev` Data type: `Python::Package::Ensure` Desired installation state for the python-dev package. Default value: `$python::params::dev` ##### <a name="gunicorn"></a>`gunicorn` Data type: `Python::Package::Ensure` Desired installation state for Gunicorn. Default value: `$python::params::gunicorn` ##### <a name="manage_gunicorn"></a>`manage_gunicorn` Data type: `Boolean` Allow Installation / Removal of Gunicorn. Default value: `$python::params::manage_gunicorn` ##### <a name="provider"></a>`provider` Data type: `Optional[Python::Provider]` What provider to use for installation of the packages, except gunicorn and Python itself. Default value: `$python::params::provider` ##### <a name="use_epel"></a>`use_epel` Data type: `Boolean` to determine if the epel class is used. Default value: `$python::params::use_epel` ##### <a name="manage_scl"></a>`manage_scl` Data type: `Boolean` Whether to manage core SCL packages or not. Default value: `$python::params::manage_scl` ##### <a name="umask"></a>`umask` Data type: `Optional[Python::Umask]` The default umask for invoked exec calls. Default value: ``undef`` ##### <a name="manage_python_package"></a>`manage_python_package` Data type: `Boolean` Default value: `$python::params::manage_python_package` ##### <a name="manage_pip_package"></a>`manage_pip_package` Data type: `Boolean` Default value: `$python::params::manage_pip_package` ##### <a name="gunicorn_package_name"></a>`gunicorn_package_name` Data type: `String[1]` Default value: `$python::params::gunicorn_package_name` ##### <a name="python_pips"></a>`python_pips` Data type: `Hash` Default value: `{}` ##### <a name="python_pyvenvs"></a>`python_pyvenvs` Data type: `Hash` Default value: `{}` ##### <a name="python_requirements"></a>`python_requirements` Data type: `Hash` Default value: `{}` ##### <a name="python_dotfiles"></a>`python_dotfiles` Data type: `Hash` Default value: `{}` ##### <a name="rhscl_use_public_repository"></a>`rhscl_use_public_repository` Data type: `Boolean` Default value: `$python::params::rhscl_use_public_repository` ##### <a name="anaconda_installer_url"></a>`anaconda_installer_url` Data type: `Stdlib::Httpurl` Default value: `$python::params::anaconda_installer_url` ##### <a name="anaconda_install_path"></a>`anaconda_install_path` Data type: `Stdlib::Absolutepath` Default value: `$python::params::anaconda_install_path` ### <a name="pythonpipbootstrap"></a>`python::pip::bootstrap` allow to bootstrap pip when python is managed from other module #### Examples ##### ```puppet class { 'python::pip::bootstrap': version => 'pip', } ``` #### Parameters The following parameters are available in the `python::pip::bootstrap` class: * [`version`](#version) * [`manage_python`](#manage_python) * [`http_proxy`](#http_proxy) * [`exec_provider`](#exec_provider) ##### <a name="version"></a>`version` Data type: `Enum['pip', 'pip3']` should be pip or pip3 Default value: `'pip'` ##### <a name="manage_python"></a>`manage_python` Data type: `Variant[Boolean, String]` if python module will manage deps Default value: ``false`` ##### <a name="http_proxy"></a>`http_proxy` Data type: `Optional[Stdlib::HTTPUrl]` Proxy server to use for outbound connections. Default value: ``undef`` ##### <a name="exec_provider"></a>`exec_provider` Data type: `String[1]` Default value: `'shell'` ## Defined types ### <a name="pythondotfile"></a>`python::dotfile` Manages any python dotfiles with a simple config hash. #### Examples ##### Create a pip config in /var/lib/jenkins/.pip/ ```puppet python::dotfile { '/var/lib/jenkins/.pip/pip.conf': ensure => present, owner => 'jenkins', group => 'jenkins', config => { 'global' => { 'index-url' => 'https://mypypi.acme.com/simple/' 'extra-index-url' => 'https://pypi.risedev.at/simple/' } } } ``` #### Parameters The following parameters are available in the `python::dotfile` defined type: * [`ensure`](#ensure) * [`filename`](#filename) * [`mode`](#mode) * [`owner`](#owner) * [`group`](#group) * [`config`](#config) ##### <a name="ensure"></a>`ensure` Data type: `Enum['absent', 'present']` Default value: `'present'` ##### <a name="filename"></a>`filename` Data type: `Stdlib::Absolutepath` Filename. Default value: `$title` ##### <a name="mode"></a>`mode` Data type: `Stdlib::Filemode` File mode. Default value: `'0644'` ##### <a name="owner"></a>`owner` Data type: `String[1]` user owner of dotfile Default value: `'root'` ##### <a name="group"></a>`group` Data type: `String[1]` group owner of dotfile Default value: `'root'` ##### <a name="config"></a>`config` Data type: `Hash` Config hash. This will be expanded to an ini-file. Default value: `{}` ### <a name="pythongunicorn"></a>`python::gunicorn` Manages Gunicorn virtual hosts. #### Examples ##### run gunicorn on vhost in virtualenv /var/www/project1 ```puppet python::gunicorn { 'vhost': ensure => present, virtualenv => '/var/www/project1', mode => 'wsgi', dir => '/var/www/project1/current', bind => 'unix:/tmp/gunicorn.socket', environment => 'prod', owner => 'www-data', group => 'www-data', appmodule => 'app:app', osenv => { 'DBHOST' => 'dbserver.example.com' }, timeout => 30, template => 'python/gunicorn.erb', } ``` #### Parameters The following parameters are available in the `python::gunicorn` defined type: * [`ensure`](#ensure) * [`config_dir`](#config_dir) * [`manage_config_dir`](#manage_config_dir) * [`virtualenv`](#virtualenv) * [`mode`](#mode) * [`dir`](#dir) * [`bind`](#bind) * [`environment`](#environment) * [`appmodule`](#appmodule) * [`osenv`](#osenv) * [`timeout`](#timeout) * [`template`](#template) * [`args`](#args) * [`owner`](#owner) * [`group`](#group) * [`workers`](#workers) * [`access_log_format`](#access_log_format) * [`accesslog`](#accesslog) * [`errorlog`](#errorlog) * [`log_level`](#log_level) ##### <a name="ensure"></a>`ensure` Data type: `Enum['present', 'absent']` Default value: `present` ##### <a name="config_dir"></a>`config_dir` Data type: `Stdlib::Absolutepath` Configure the gunicorn config directory path. Default value: `'/etc/gunicorn.d'` ##### <a name="manage_config_dir"></a>`manage_config_dir` Data type: `Boolean` Set if the gunicorn config directory should be created. Default value: ``false`` ##### <a name="virtualenv"></a>`virtualenv` Data type: `Variant[Boolean,Stdlib::Absolutepath]` Run in virtualenv, specify directory. Default value: ``false`` ##### <a name="mode"></a>`mode` Data type: `Enum['wsgi', 'django']` Gunicorn mode. Default value: `'wsgi'` ##### <a name="dir"></a>`dir` Data type: `Stdlib::Absolutepath` Application directory. ##### <a name="bind"></a>`bind` Data type: `Variant[String[1],Boolean]` Bind on: 'HOST', 'HOST:PORT', 'unix:PATH'. Default: system-wide: unix:/tmp/gunicorn-$name.socket virtualenv: unix:${virtualenv}/${name}.socket Default value: ``false`` ##### <a name="environment"></a>`environment` Data type: `Variant[String[1],Boolean]` Set ENVIRONMENT variable. Default value: ``false`` ##### <a name="appmodule"></a>`appmodule` Data type: `String[1]` Set the application module name for gunicorn to load when not using Django. Default value: `'app:app'` ##### <a name="osenv"></a>`osenv` Data type: `Variant[Boolean,Hash]` Allows setting environment variables for the gunicorn service. Accepts a hash of 'key': 'value' pairs. Default value: ``false`` ##### <a name="timeout"></a>`timeout` Data type: `Integer` Allows setting the gunicorn idle worker process time before being killed. The unit of time is seconds. Default value: `30` ##### <a name="template"></a>`template` Data type: `String[1]` Which ERB template to use. Default value: `'python/gunicorn.erb'` ##### <a name="args"></a>`args` Data type: `Array` Custom arguments to add in gunicorn config file. Default value: `[]` ##### <a name="owner"></a>`owner` Data type: `String[1]` Default value: `'www-data'` ##### <a name="group"></a>`group` Data type: `String[1]` Default value: `'www-data'` ##### <a name="workers"></a>`workers` Data type: `Variant[Boolean,Integer]` Default value: ``false`` ##### <a name="access_log_format"></a>`access_log_format` Data type: `Variant[Boolean,String[1]]` Default value: ``false`` ##### <a name="accesslog"></a>`accesslog` Data type: `Variant[Boolean,Stdlib::Absolutepath]` Default value: ``false`` ##### <a name="errorlog"></a>`errorlog` Data type: `Variant[Boolean,Stdlib::Absolutepath]` Default value: ``false`` ##### <a name="log_level"></a>`log_level` Data type: `Python::Loglevel` Default value: `'error'` ### <a name="pythonpip"></a>`python::pip` Installs and manages packages from pip. #### Examples ##### Install Flask to /var/www/project1 using a proxy ```puppet python::pip { 'flask': virtualenv => '/var/www/project1', proxy => 'http://proxy.domain.com:3128', index => 'http://www.example.com/simple/', } ``` ##### Install cx_Oracle with pip ```puppet python::pip { 'cx_Oracle' : pkgname => 'cx_Oracle', ensure => '5.1.2', 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, } ``` ##### Install Requests with pip3 ```puppet python::pip { 'requests' : ensure => 'present', pkgname => 'requests', pip_provider => 'pip3', virtualenv => '/var/www/project1', owner => 'root', timeout => 1800 } ``` #### Parameters The following parameters are available in the `python::pip` defined type: * [`name`](#name) * [`pkgname`](#pkgname) * [`ensure`](#ensure) * [`virtualenv`](#virtualenv) * [`pip_provider`](#pip_provider) * [`url`](#url) * [`owner`](#owner) * [`group`](#group) * [`index`](#index) * [`proxy`](#proxy) * [`editable`](#editable) * [`environment`](#environment) * [`extras`](#extras) * [`timeout`](#timeout) * [`install_args`](#install_args) * [`uninstall_args`](#uninstall_args) * [`log_dir`](#log_dir) * [`egg`](#egg) * [`umask`](#umask) * [`path`](#path) * [`exec_provider`](#exec_provider) ##### <a name="name"></a>`name` must be unique ##### <a name="pkgname"></a>`pkgname` Data type: `String[1]` the name of the package. Default value: `$name` ##### <a name="ensure"></a>`ensure` Data type: `Variant[Enum[present, absent, latest], String[1]]` Require pip to be available. Default value: `present` ##### <a name="virtualenv"></a>`virtualenv` Data type: `Variant[Enum['system'], Stdlib::Absolutepath]` virtualenv to run pip in. Default value: `'system'` ##### <a name="pip_provider"></a>`pip_provider` Data type: `String[1]` version of pip you wish to use. Default value: `'pip'` ##### <a name="url"></a>`url` Data type: `Variant[Boolean, String]` URL to install from. Default value: ``false`` ##### <a name="owner"></a>`owner` Data type: `String[1]` The owner of the virtualenv being manipulated. Default value: `'root'` ##### <a name="group"></a>`group` Data type: `Optional[String[1]]` The group of the virtualenv being manipulated. Default value: `getvar('python::params::group')` ##### <a name="index"></a>`index` Data type: `Variant[Boolean,String[1]]` Base URL of Python package index. Default value: ``false`` ##### <a name="proxy"></a>`proxy` Data type: `Optional[Stdlib::HTTPUrl]` Proxy server to use for outbound connections. Default value: ``undef`` ##### <a name="editable"></a>`editable` Data type: `Boolean` If true the package is installed as an editable resource. Default value: ``false`` ##### <a name="environment"></a>`environment` Data type: `Array` Additional environment variables required to install the packages. Default value: `[]` ##### <a name="extras"></a>`extras` Data type: `Array` Extra features provided by the package which should be installed. Default value: `[]` ##### <a name="timeout"></a>`timeout` Data type: `Numeric` The maximum time in seconds the "pip install" command should take. Default value: `1800` ##### <a name="install_args"></a>`install_args` Data type: `Optional[String[1]]` Any additional installation arguments that will be supplied when running pip install. Default value: ``undef`` ##### <a name="uninstall_args"></a>`uninstall_args` Data type: `Optional[String[1]]` Any additional arguments that will be supplied when running pip uninstall. Default value: ``undef`` ##### <a name="log_dir"></a>`log_dir` Data type: `String[1]` Log directory Default value: `'/tmp'` ##### <a name="egg"></a>`egg` Data type: `Any` The egg name to use Default value: ``false`` ##### <a name="umask"></a>`umask` Data type: `Optional[Python::Umask]` Default value: ``undef`` ##### <a name="path"></a>`path` Data type: `Array[String]` Default value: `['/usr/local/bin','/usr/bin','/bin', '/usr/sbin']` ##### <a name="exec_provider"></a>`exec_provider` Data type: `String[1]` Default value: `'shell'` ### <a name="pythonpyvenv"></a>`python::pyvenv` Create a Python3 virtualenv using pyvenv. #### Examples ##### ```puppet python::pyvenv { '/var/www/project1' : ensure => present, version => 'system', systempkgs => true, venv_dir => '/home/appuser/virtualenvs', owner => 'appuser', group => 'apps', } ``` #### Parameters The following parameters are available in the `python::pyvenv` defined type: * [`ensure`](#ensure) * [`version`](#version) * [`systempkgs`](#systempkgs) * [`venv_dir`](#venv_dir) * [`owner`](#owner) * [`group`](#group) * [`mode`](#mode) * [`path`](#path) * [`environment`](#environment) * [`pip_version`](#pip_version) ##### <a name="ensure"></a>`ensure` Data type: `Python::Package::Ensure` Default value: `present` ##### <a name="version"></a>`version` Data type: `Python::Version` Python version to use. Default value: `'system'` ##### <a name="systempkgs"></a>`systempkgs` Data type: `Boolean` Copy system site-packages into virtualenv Default value: ``false`` ##### <a name="venv_dir"></a>`venv_dir` Data type: `Stdlib::Absolutepath` Directory to install virtualenv to Default value: `$name` ##### <a name="owner"></a>`owner` Data type: `String[1]` The owner of the virtualenv being manipulated Default value: `'root'` ##### <a name="group"></a>`group` Data type: `String[1]` The group relating to the virtualenv being manipulated Default value: `'root'` ##### <a name="mode"></a>`mode` Data type: `Stdlib::Filemode` Optionally specify directory mode Default value: `'0755'` ##### <a name="path"></a>`path` Data type: `Array[Stdlib::Absolutepath]` Specifies the PATH variable. Default value: `['/bin', '/usr/bin', '/usr/sbin', '/usr/local/bin',]` ##### <a name="environment"></a>`environment` Data type: `Array` Optionally specify environment variables for pyvenv Default value: `[]` ##### <a name="pip_version"></a>`pip_version` Data type: `Python::Venv::PipVersion` Default value: `'latest'` ### <a name="pythonrequirements"></a>`python::requirements` Installs and manages Python packages from requirements file. #### Examples ##### install pip requirements from /var/www/project1/requirements.txt ```puppet python::requirements { '/var/www/project1/requirements.txt' : virtualenv => '/var/www/project1', proxy => 'http://proxy.domain.com:3128', owner => 'appuser', group => 'apps', } ``` #### Parameters The following parameters are available in the `python::requirements` defined type: * [`requirements`](#requirements) * [`virtualenv`](#virtualenv) * [`pip_provider`](#pip_provider) * [`owner`](#owner) * [`group`](#group) * [`proxy`](#proxy) * [`src`](#src) * [`environment`](#environment) * [`forceupdate`](#forceupdate) * [`cwd`](#cwd) * [`extra_pip_args`](#extra_pip_args) * [`manage_requirements`](#manage_requirements) * [`fix_requirements_owner`](#fix_requirements_owner) * [`log_dir`](#log_dir) * [`timeout`](#timeout) ##### <a name="requirements"></a>`requirements` Data type: `Stdlib::Absolutepath` Path to the requirements file. Default value: `$name` ##### <a name="virtualenv"></a>`virtualenv` Data type: `Variant[Enum['system'],Stdlib::Absolutepath]` virtualenv to run pip in. Default value: `'system'` ##### <a name="pip_provider"></a>`pip_provider` Data type: `Enum['pip', 'pip3']` version of pip you wish to use. Default value: `'pip'` ##### <a name="owner"></a>`owner` Data type: `String[1]` The owner of the virtualenv being manipulated. Default value: `'root'` ##### <a name="group"></a>`group` Data type: `String[1]` The group relating to the virtualenv being manipulated. Default value: `'root'` ##### <a name="proxy"></a>`proxy` Data type: `Optional[Stdlib::HTTPUrl]` Proxy server to use for outbound connections. Default value: ``undef`` ##### <a name="src"></a>`src` Data type: `Any` Pip --src parameter to; if the requirements file contains --editable resources, this parameter specifies where they will be installed. See the pip documentation for more. Default value: ``false`` ##### <a name="environment"></a>`environment` Data type: `Array` Additional environment variables required to install the packages. Default value: `[]` ##### <a name="forceupdate"></a>`forceupdate` Data type: `Boolean` Run a pip install requirements even if we don't receive an event from the requirements file - Useful for when the requirements file is written as part of a resource other than file (E.g vcsrepo) Default value: ``false`` ##### <a name="cwd"></a>`cwd` Data type: `Optional[Stdlib::Absolutepath]` The directory from which to run the "pip install" command. Default value: ``undef`` ##### <a name="extra_pip_args"></a>`extra_pip_args` Data type: `Optional[String[1]]` Extra arguments to pass to pip after the requirements file Default value: ``undef`` ##### <a name="manage_requirements"></a>`manage_requirements` Data type: `Boolean` Create the requirements file if it doesn't exist. Default value: ``true`` ##### <a name="fix_requirements_owner"></a>`fix_requirements_owner` Data type: `Boolean` Change owner and group of requirements file. Default value: ``true`` ##### <a name="log_dir"></a>`log_dir` Data type: `Stdlib::Absolutepath` Log directory. Default value: `'/tmp'` ##### <a name="timeout"></a>`timeout` Data type: `Integer` The maximum time in seconds the "pip install" command should take. Default value: `1800` ## Data types ### <a name="pythonloglevel"></a>`Python::Loglevel` A version type to match all valid loglevels for python Alias of ```puppet Enum['debug', 'info', 'warning', 'error', 'critical'] ``` ### <a name="pythonpackageensure"></a>`Python::Package::Ensure` A version type to match all valid package ensures for python Alias of ```puppet Enum['absent', 'present', 'latest'] ``` ### <a name="pythonprovider"></a>`Python::Provider` A version type to match all valid provider for python Alias of ```puppet Enum['pip', 'scl', 'rhscl', 'anaconda', ''] ``` ### <a name="pythonumask"></a>`Python::Umask` A version type to match valid umask for python Alias of ```puppet Pattern[/[0-7]{1,4}/] ``` ### <a name="pythonvenvpipversion"></a>`Python::Venv::PipVersion` A version type to ensure a specific Pip version in a virtual env. Alias of ```puppet Pattern[/^(<|>|<=|>=|==) [0-9]*(\.[0-9]+)*$/, /\Alatest\Z/] ``` ### <a name="pythonversion"></a>`Python::Version` A version type to match all valid versions for python Alias of ```puppet Pattern[/\A(python)?[0-9](\.?[0-9])*/, /\Apypy\Z/, /\Asystem\Z/, /\Arh-python[0-9]{2}(?:-python)?\Z/] ```