Skip to content

pyvenv cannot install until $facts['python3_version'] exists (or is overidden) on RedHat style OSes #635

@decibelhertz

Description

@decibelhertz

Affected Puppet, Ruby, OS and module versions/distributions

  • Puppet: 6.26.0
  • Ruby: 2.5.9p229
  • Distribution: Oracle Linux 8
  • Module version: 6.2.1

How to reproduce (e.g Puppet code you use)

Use this module to install a python role with a pyvenv declared and absolutely no python3 installed (minimal OEL 8 install)

What are you seeing

Failure to compile catalog

What behaviour did you expect instead

Compiled catalog

Output log

puppet agent -t --verbose
Info: Using environment 'pe2019'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Retrieving locales
Info: Loading facts
Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Function Call, 'split' parameter 'str' expects a String value, got Undef (file: /etc/puppetlabs/code/environments/pe2019/modules/python/manifests/pyvenv.pp, line: 44, column: 34) (file: /etc/puppetlabs/code/environments/pe2019/modules/python/manifests/init.pp, line: 76) on node example.com
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run

Any additional information you'd like to impart

A cheap workaround would be to wrap https://github.com/voxpupuli/puppet-python/blob/master/manifests/init.pp#L80-L84 in a conditional EG

# Conditionally allow hiera configuration of python resources once Puppet facts exist
# Will take multiple runs to converge
if $facts['python3_version'] {
  create_resources('python::pip', $python_pips)
  create_resources('python::pyvenv', $python_pyvenvs)
  create_resources('python::requirements', $python_requirements)
  create_resources('python::dotfile', $python_dotfiles)
}

...but that depends on if you're supporting python2 still. Perhaps better logic for converting 'system' into a real Python version is needed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions