Yumrepo appears to be checking file existence before allowing the package command to complete, meaning that it creates a file containing only "[remi]" and "enabled=1", overwriting the file that the RPM installed.
Manifests, additional debug output, etc., available upon request. Just tell me what you need to know. Workarounds especially welcomed. Puppet v. 0.24.4, running with --debug --test, on Ruby 1.8.6.114-1, compiled from source with default options.
debug: //Node[default]/remi_enabled/Yumrepo[remi]/require: requires Package[remi-release-5-4.el5.remi]
...
debug: Puppet::Type::Package::ProviderRpm: Not suitable: false value
debug: Puppet::Type::Package::ProviderRpm: Executing '/bin/rpm -q remi-release-5-4.el5.remi --nosignature --nodigest --qf %{NAME} %|EPOCH?{%{EPOCH}}:{0}| %{VERSION} %{RELEASE} %{ARCH}'
debug: /Package[remi-release-5-4.el5.remi]: Changing ensure
debug: /Package[remi-release-5-4.el5.remi]: 1 change(s)
debug: Puppet::Type::Package::ProviderRpm: Executing '/bin/rpm -i --oldpackage http://rpms.famillecollet.com/el5.x86_64/remi-release-5-4.el5.remi.noarch.rpm'
notice: /Package[remi-release-5-4.el5.remi]/ensure: created
info: create new repo remi in file /etc/yum.repos.d/remi.repo
debug: //Node[default]/remi_enabled/Yumrepo[remi]: Changing enabled
debug: //Node[default]/remi_enabled/Yumrepo[remi]: 1 change(s)
notice: //Node[default]/remi_enabled/Yumrepo[remi]/enabled: defined 'enabled' as '1'
info: Filebucket[/var/lib/puppet/clientbucket]: Adding /etc/yum.repos.d/remi.repo(18f7009978e772c9c646b9410fa3a8b6)