Skip to content

Instantly share code, notes, and snippets.

@h0tw1r3
Created January 10, 2024 16:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save h0tw1r3/cd3a565e0ab12a464de284677b3bc799 to your computer and use it in GitHub Desktop.
Save h0tw1r3/cd3a565e0ab12a464de284677b3bc799 to your computer and use it in GitHub Desktop.
fakeprovide rpm resource type for puppet
# fake provide rpm dependencies
#
# requires stdlib module
#
# @param provide
# what to provide
# @param extras
# extra provides to add to package
#
# @example
# fakeprovide { 'openjdk18':
# provide => 'java-1.8.0-openjdk-headless',
# extras => ['java-1_8_0-openjdk-headless'],
# before => Package['puppetserver'],
# }
define fakeprovide (
Pattern[/[A-Za-z0-9._\-+]+/] $provide = $title,
Optional[Array[Pattern[/[A-Za-z0-9._\-+]+/]]] $extras = undef,
) {
$fakeprovide = '/usr/local/bin/fakeprovide'
$required_packages = ['rpm-build']
if $extras { $extra_provides = "-P '${extras.join(' ')}'" }
$package_version = fqdn_rand(8192, md5("${provide}+${extra_provides}"))
$package_name = "fakeprovide-${provide}-${package_version}"
stdlib::ensure_packages($required_packages)
if !defined(File[$fakeprovide]) {
file { $fakeprovide:
mode => '0755',
source => 'https://raw.githubusercontent.com/larsks/fakeprovide/44698c8b398bb5f8071e1dc3f63c3f275861a250/fakeprovide',
checksum => 'sha256',
checksum_value => '173db3c5815863f2a2381239a4ea49e620febefe5e072bd3cb8dd0a268b23898',
require => Package[$required_packages],
}
}
exec { "fakeprovide-build-${title}":
command => "${fakeprovide} -v ${package_version} ${extra_provides} ${provide}",
cwd => '/var/tmp',
creates => [
"/var/tmp/${package_name}.el${facts['os']['release']['major']}.noarch.rpm",
"/var/tmp/${package_name}.noarch.rpm",
],
unless => "/usr/bin/env rpm -q ${package_name}",
require => File[$fakeprovide],
}
~> exec { "fakeprovide-install-${title}":
command => "/usr/bin/env rpm -Uvh --force --oldpackage /var/tmp/${package_name}.*noarch.rpm",
unless => "/usr/bin/env rpm -q ${package_name}",
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment