I've got three module manifests in separate files (stripped down to bare essentials):
class users {
$user = 'foo'
user { $user:
ensure => present;
}
}
class dvcs_cli {
require users
file { "/home/${::users::user}/.gitconfig":
ensure => present,
source => 'puppet:///modules/dvcs_cli/.gitconfig';
}
}
class shell {
require users
file { "/home/${::users::user}/.bash_aliases":
ensure => present,
source => 'puppet:///modules/shell/bash_aliases.sh';
}
}
.gitconfig
is created in /home/foo
as expected, but **.bash_aliases
is created in /home
**:
$ sudo /usr/bin/puppet apply --modulepath modules --detailed-exitcodes --hiera_config=hieradata/hiera.yaml manifests/host.pp || [ $? -eq 2 ]
[…]
Notice: /Stage[main]/Shell/File[/home//.bash_aliases]/ensure: defined content as '{md5}[…]'
Notice: /Stage[main]/Shell/File[/home/foo/.gitconfig]/ensure: defined content as '{md5}[…]'
It's as if ${::users::user}
evaluates to the empty string in one module, but not in the other. How is this possible?
---
Running with --debug
revealed a possible issue: **User[foo]
is autorequired for dvcs_cli
, but not for shell
:**
$ grep 'Adding autorequire relationship with User' puppet.log | grep -i -e dvcs_cli -e shell
Debug: /Stage[main]/Dvcs_cli/File[/home/pair/.gitconfig]: Adding autorequire relationship with User[pair]
This contradicts the manual , which says:
> If Puppet is managing the user or group that owns a file, the file resource will autorequire them.
Could this be related to the "Autorequire relationships are opaque" , caused by the fact that both files are in the same directory? And shouldn't autorequires be irrelevant anyway, since both modules explicitly require users
?
---
Running
$ puppet --version
4.2.1
on
$ cat /etc/redhat-release
Fedora release 24 (Twenty Four)
Asked by l0b0
(53368 rep)
Sep 5, 2016, 03:18 PM
Last activity: Mar 24, 2023, 11:44 AM
Last activity: Mar 24, 2023, 11:44 AM