Puppetlabs/apache and sudo
sudodevnull opened this issue · 5 comments
I am getting a dependency cycle between your module and the puppetlabs/apache module. Hoping you can help identify/resolve the problem here:
Failed to apply catalog: Found 1 dependency cycle: (Anchor[sudo::begin] => Class[Sudo] => Stage[postfeatures] => Stage[hieraclasses] => Class[Apache] => Package[httpd] => File[headers.load] => Apache::Mod[headers] => Class[Apache::Mod::Headers] => Stage[main] => Stage[postfeatures] => Class[Sudo] => Anchor[sudo::begin]) Try the '--graph' option and opening the resulting '.dot' file in OmniGraffle or GraphViz
Here is the digraph:
digraph Resource_Cycles {
label = "Resource Cycles"
"Anchor[sudo::begin]" -> "Class[Sudo]" -> "Stage[postfeatures]" -> "Stage[hieraclasses]" -> "Class[Apache]" -> "Exec[mkdir /etc/httpd/conf.modules.d]" -> "File[headers.load]" -> "Apache::Mod[headers]" -> "Class[Apache::Mod::Headers]" -> "Stage[main]" -> "Stage[postfeatures]" -> "Class[Linuxauth]" -> "Class[Linuxauth]" -> "Stage[postfeatures]"
"Anchor[sudo::begin]" -> "Class[Sudo]" -> "Stage[postfeatures]" -> "Stage[hieraclasses]" -> "Class[Apache]" -> "Exec[mkdir /etc/httpd/conf.modules.d]" -> "File[headers.load]" -> "Apache::Mod[headers]" -> "Class[Apache::Mod::Headers]" -> "Stage[main]" -> "Stage[postfeatures]" -> "Class[Sudo]" -> "Anchor[sudo::begin]"
"Anchor[sudo::begin]" -> "Class[Sudo]" -> "Stage[postfeatures]" -> "Stage[hieraclasses]" -> "Class[Apache]" -> "Package[httpd]" -> "Exec[mkdir /etc/httpd/conf.modules.d]" -> "File[headers.load]" -> "Apache::Mod[headers]" -> "Class[Apache::Mod::Headers]" -> "Stage[main]" -> "Stage[postfeatures]" -> "Class[Sudo]" -> "Anchor[sudo::begin]"
"Anchor[sudo::begin]" -> "Class[Sudo]" -> "Stage[postfeatures]" -> "Stage[hieraclasses]" -> "Class[Apache]" -> "Package[httpd]" -> "File[headers.load]" -> "Apache::Mod[headers]" -> "Class[Apache::Mod::Headers]" -> "Stage[main]" -> "Stage[postfeatures]" -> "Class[Linuxauth]" -> "Class[Linuxauth]" -> "Stage[postfeatures]"
"Anchor[sudo::begin]" -> "Class[Sudo]" -> "Stage[postfeatures]" -> "Stage[hieraclasses]" -> "Class[Apache]" -> "Package[httpd]" -> "File[headers.load]" -> "Apache::Mod[headers]" -> "Class[Apache::Mod::Headers]" -> "Stage[main]" -> "Stage[postfeatures]" -> "Class[Sudo::Configs]" -> "Class[Sudo::Configs]" -> "Stage[postfeatures]"
"Anchor[sudo::begin]" -> "Class[Sudo]" -> "Stage[postfeatures]" -> "Stage[hieraclasses]" -> "Class[Apache]" -> "Package[httpd]" -> "File[headers.load]" -> "Apache::Mod[headers]" -> "Class[Apache::Mod::Headers]" -> "Stage[main]" -> "Stage[postfeatures]" -> "Class[Sudo::Params]" -> "Class[Sudo::Params]" -> "Stage[postfeatures]"
"Anchor[sudo::begin]" -> "Class[Sudo]" -> "Stage[postfeatures]" -> "Stage[hieraclasses]" -> "Class[Apache]" -> "Package[httpd]" -> "File[headers.load]" -> "Apache::Mod[headers]" -> "Class[Apache::Mod::Headers]" -> "Stage[main]" -> "Stage[postfeatures]" -> "Class[Sudo]" -> "Anchor[sudo::begin]"
"Anchor[sudo::begin]" -> "Class[Sudo]" -> "Stage[postfeatures]" -> "Stage[hieraclasses]" -> "Class[Apache]" -> "Package[httpd]" -> "File[headers.load]" -> "Apache::Mod[headers]" -> "Class[Apache::Mod::Headers]" -> "Stage[main]" -> "Stage[postfeatures]" -> "Class[Sudo]" -> "Anchor[sudo::end]" -> "Class[Sudo]"
"Anchor[sudo::begin]" -> "Class[Sudo]" -> "Stage[postfeatures]" -> "Stage[hieraclasses]" -> "Class[Apache]" -> "Package[httpd]" -> "File[headers.load]" -> "Apache::Mod[headers]" -> "Class[Apache::Mod::Headers]" -> "Stage[main]" -> "Stage[postfeatures]" -> "Class[Sudo]" -> "File[/etc/sudoers.d/]" -> "Class[Sudo]"
"Anchor[sudo::begin]" -> "Class[Sudo]" -> "Stage[postfeatures]" -> "Stage[hieraclasses]" -> "Class[Apache]" -> "Package[httpd]" -> "File[headers.load]" -> "Apache::Mod[headers]" -> "Class[Apache::Mod::Headers]" -> "Stage[main]" -> "Stage[postfeatures]" -> "Class[Sudo]" -> "File[/etc/sudoers]" -> "Class[Sudo]"
}
Here is our current wrapper class for your module:
class linuxauth::sudo {
$sudoers_env = $facts['tier'] ? {
/(uat|dev|sit)/ => 'nonprod',
/(prod|dr)/ => 'prod',
}
$sudoers_data = lookup('linuxauth::sudoers')
$sudoers_base = $sudoers_data['base'] ? {
undef => {},
default => $sudoers_data['base'],
}
$sudoers_applications = $sudoers_data[$sudoers_env][$::node_type] ? {
undef => {},
default => $sudoers_data[$sudoers_env][$::node_type],
}
$sudoers = $sudoers_base + $sudoers_applications
contain class { '::sudo':
purge => false,
config_file_replace => false,
}
if ! $sudoers.empty {
$sudoers.each |$sudoer, $config| {
::sudo::conf { $sudoer :
content => $config[content],
sudo_file_name => $sudoer,
}
}
}
}
This is for rhel7
I believe it is due to your anchor
This should be fixed in the current master
can I asked what you did to resolve? I have not tested yet...