Skip to content

Topscope variable is empty in (sub) modules #2866

@aloosnetmatch

Description

@aloosnetmatch

Describe the Bug

Topscope variable is empty is (sub) modules / classes, while the same variable IS known in the toplevel 00.pp

We have an 00.pp manifest files that sets a couple of top scope variables.
This 00.pp is executed for all agents.
We also have other manifests per server who offcourse call other classes.

00.pp

if '<value>' == $::facts.get('<value>') {
  $az_environment = 'prod'
  $test2 = "test2"
}

$test1 = "test1"
notify {"toplevel scope_test1    : ${::test1}" :}
notify {"toplevel scope_test2    : ${::test2}" :}

test.pp

class test {
  notify {"test class scope_test1    : ${::test1}" :}
  notify {"test class scope_test2    : ${::test2}" :}
}

When we apply (and the if statement = "True" ) , we get the results

Notice: toplevel scope_test1    : test1
Notice: toplevel scope_test2    : test2
Notice: test class scope_test1    : 
Notice: test class scope_test2    : test2

Expected Behavior

I expect the top scope variable test1 to always a have the defined value, since it's defined in the top scope.
Also remarkable is that when the variable test2 is within the "if" statement , the value works as expected.
Moving the variable outside of the "if" statement , makes it "empty" in the sub modules / classes.

Environment

We run puppetserver 7.17.0 and client versions 6.28.0 / 7.31.0.

Additional Context

I noticed this issue:

https://www.puppet.com/docs/puppet/7/known_issues_puppet#pup-11437

In Puppet 6.26 and 7.14, the lookup command fails to resolve toplevel facts in hiera configs if you're using the --environment option

We run a higher version already. (7.17.0)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions