| While researching PE-27428 we discovered that the compiler terminus collects metadata for each file resource and then decides whether the metadata can be inlined or not (only files within a module in the per-environment directory). In the case of a recursive file resource, the terminus collects metadata for the directory and its children. See https://github.com/puppetlabs/puppet/blob/d579170b0583eed4e9050a8b798574c451f3c2ac/lib/puppet/indirector/catalog/compiler.rb#L186-L204 PE uses a recursive file resource to provision a replica. The resource is of the form:
file { "/opt/puppetlabs/server/data/packages/public": |
ensure => directory, |
purge => true, |
recurse => true, |
force => true, |
source => ["puppet:///pe_packages"] |
}
|
However, the pe_packages mount point is not inlineable. This means puppetserver does md5/sha256 checksums for all of the puppet-agent packages, only to discard the metadata. The compiler indirection should collect metadata for the directory first, to resolve the requested path into an absolute path, and then decide whether to collect metadata for its children. /cc Joshua Partlow, Maggie Dreyer |