Puppet Class: devbox::lang::python

Defined in:
manifests/lang/python.pp

Overview

Python devbox language configuration.

Parameters:

  • dependencies (Any)
  • packages (Any)
  • pip_packages (Any)
  • pip_path (Any)
  • python_path (Any)
  • virtualenvsource (Any)
  • pypi_username (Any) (defaults to: '')
  • pypi_password (Any) (defaults to: '')
  • default_version (Any) (defaults to: '3')


2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'manifests/lang/python.pp', line 2

class devbox::lang::python(
  $dependencies,
  $packages,
  $pip_packages,
  $pip_path,
  $python_path,
  $virtualenvsource,
  $pypi_username = '',
  $pypi_password = '',
  $default_version = '3'
) {

  include ::devbox::lang

  ensure_packages($dependencies, { ensure => latest })
  ensure_packages($packages, { ensure => latest })

  ensure_resource(file, ["${devbox::home}/.config"], { ensure => directory })
  ensure_resource(file, ["${devbox::home}/.local", "${devbox::home}/.local/share", "${devbox::home}/.local/share/python", "${devbox::home}/.local/share/python/virtualenvs"], { ensure => directory })

  exec { 'retrieve_pip':
    command => '/usr/bin/curl -L https://bootstrap.pypa.io/get-pip.py > /tmp/get-pip.py',
    creates => '/tmp/get-pip.py',
    require => Package[$dependencies],
  }

  exec { 'install_pip2':
    command   => "${python_path}/python2 /tmp/get-pip.py",
    creates   => "${pip_path}/pip2",
    require   => Package[$packages],
    subscribe => Exec['retrieve_pip'],
  }
  exec { 'install_pip3':
    command   => "${python_path}/python3 /tmp/get-pip.py",
    creates   => "${pip_path}/pip3",
    require   => Package[$packages],
    subscribe => Exec['retrieve_pip'],
  }

  file { '/usr/local/bin/python':
    ensure => link,
    target => "${python_path}/python${default_version}",
    owner  => root,
    group  => root,
  }
  file { '/usr/local/bin/pip':
    ensure => link,
    target => "${pip_path}/pip${default_version}",
    owner  => root,
    group  => root,
  }

  ensure_packages($pip_packages, {
    ensure   => latest,
    provider => pip,
    require  => [Exec['install_pip2'], Exec['install_pip3']],
  })

  file { '/etc/pylintrc':
    ensure => present,
    source => 'puppet:///modules/devbox/lang/python/pylintrc',
    owner  => root,
    group  => root,
    mode   => '0644',
  }

  file { "${devbox::home}/.config/python":
    ensure  => directory,
    require => File["${devbox::home}/.config"],
  } ->
  file { "${devbox::home}/.config/python/virtualenvs": ensure => directory } ->
  file { "${devbox::home}/.config/python/virtualenvs/hooks": ensure => directory }
  file { "${devbox::home}/.config/python/virtualenvs/hooks/postactivate":
    ensure  => present,
    source  => 'puppet:///modules/devbox/lang/python/virtualenv/postactivate',
    mode    => '0644',
    require => File["${devbox::home}/.config/python/virtualenvs/hooks"],
  }
  file { "${devbox::home}/.config/python/virtualenvs/hooks/postdeactivate":
    ensure  => present,
    source  => 'puppet:///modules/devbox/lang/python/virtualenv/postdeactivate',
    mode    => '0644',
    require => File["${devbox::home}/.config/python/virtualenvs/hooks"],
  }
  file { "${devbox::home}/.config/python/virtualenvs/hooks/postmkvirtualenv":
    ensure  => present,
    source  => 'puppet:///modules/devbox/lang/python/virtualenv/postmkvirtualenv',
    mode    => '0644',
    require => File["${devbox::home}/.config/python/virtualenvs/hooks"],
  }

  file { "${devbox::home}/.pypirc":
    ensure  => file,
    content => template('devbox/lang/python/pypirc.erb'),
    mode    => '0644',
  }

  ensure_resource(file, ["${devbox::home}/.config/terminal", "${devbox::home}/.config/terminal/extras"], { ensure => directory })
  file { "${devbox::home}/.config/terminal/extras/devbox-lang-python.sh":
    ensure  => file,
    content => template('devbox/lang/python/env.erb'),
    mode    => '0755',
    require => File["${devbox::home}/.config/terminal/extras"],
  }

  file { '/etc/pythonstart':
    ensure => present,
    source => 'puppet:///modules/devbox/lang/python/startup.py',
    owner  => root,
    group  => root,
    mode   => '0644',
  }

}