Properly extracting the archive, resulting in the following:
# ls -la /dev/shm/test
total 4
drwxr-xr-x 2 root root 60 Mar 21 15:29 .
drwxrwxrwt 3 root root 160 Mar 21 15:29 ..
-rw-r--r-- 1 user user 61 Mar 21 15:28 uptime
Output log
# uptime > uptime && tar -C . -czvf /dev/shm/test.tar.gz uptime && tar -tvf /dev/shm/test.tar.gz && sudo rm -rf /dev/shm/test
uptime
-rw-r--r-- user/user 61 2024-03-21 15:27 uptime
# sudo /opt/puppetlabs/bin/puppet apply --modulepath ./modules archive.pp
Notice: Compiled catalog for hostname in environment production in 0.03 seconds
Notice: /Stage[main]/Main/File[/dev/shm/test]/ensure: created
Notice: Applied catalog in 0.05 seconds
# ls -la /dev/shm/test
total 0
drwxr-xr-x 2 root root 40 Mar 21 15:27 .
drwxrwxrwt 3 root root 160 Mar 21 15:27 ..
Any additional information you'd like to impart
'creates' works but it is not really an option when knowing the archive contents upfront is not possible.
# uptime > uptime && tar -C . -czvf /dev/shm/test.tar.gz uptime && tar -tvf /dev/shm/test.tar.gz && sudo rm -rf /dev/shm/test
uptime
-rw-r--r-- user/user 61 2024-03-21 15:28 uptime
# sudo /opt/puppetlabs/bin/puppet apply --modulepath ./modules archive.pp
Notice: Compiled catalog for hostname in environment production in 0.03 seconds
Notice: /Stage[main]/Main/File[/dev/shm/test]/ensure: created
Notice: /Stage[main]/Main/Archive[/dev/shm/test.tar.gz]/creates: creates changed 'archive not extracted' to extracting in /dev/shm/test to create /dev/shm/test/uptime
Notice: Applied catalog in 0.06 seconds
# ls -la /dev/shm/test
total 4
drwxr-xr-x 2 root root 60 Mar 21 15:29 .
drwxrwxrwt 3 root root 160 Mar 21 15:29 ..
-rw-r--r-- 1 user user 61 Mar 21 15:28 uptime
# cat archive.pp
$dir = '/dev/shm/test'
$arch = '/dev/shm/test.tar.gz'
file { $dir:
ensure => directory,
}
archive { $arch:
ensure => present,
source => $arch,
extract => true,
extract_path => $dir,
creates => "${dir}/uptime",
require => File[$dir],
}
Affected Puppet, Ruby, OS and module versions/distributions
How to reproduce (e.g Puppet code you use)
What are you seeing
Fails to extract an archive.
What behaviour did you expect instead
Properly extracting the archive, resulting in the following:
Output log
Any additional information you'd like to impart
'creates' works but it is not really an option when knowing the archive contents upfront is not possible.