Yes so this is now my code, thank you John.
$packageList = [ "${postgresBase}",
"${postgresBase}-server",
"${postgresBase}-contrib",
"${postgresBase}-devel", ]
package { "${postgresBase}-libs":
ensure => $postgresqlVersion,
}
->
package { $packageList:
ensure => $postgresqlVersion,
}
And that works, it installs the one dependency I need ahead of time and
does the rest in whatever order.
Thank you,
mjr
On Wednesday, September 3, 2014 12:43:17 PM UTC-4, Mark Rosedale wrote:
>
> Yes, I finally sat down and really dug into this problem and it was an
> ordering thing...but it wasn't just ordering. It turned out that the
> dependency issue was with postgresql92-libs. If I installed that by hand
> first then I would get a clean run in puppet with all the other packages
> and the version I wanted installed. The code I used to order was the
> following (though I like your solution a bit better).
>
>
> Package['postgresql92-libs']->Package['postgresql92-server']->Package['postgresql92-contrib']->Package['postgresql92-devel']
>
>
> $packageList = [ "${postgresBase}",
> "${postgresBase}-libs",
> "${postgresBase}-server",
> "${postgresBase}-contrib",
> "${postgresBase}-devel", ]
>
> package { $packageList:
> ensure => $postgresqlVersion,
> }
>
> So the short of the story was that it was both ordering *and* a missing
> package that was creating my problem.
>
> On Wednesday, August 13, 2014 1:20:43 PM UTC-4, jcbollinger wrote:
>>
>>
>>
>> On Friday, August 8, 2014 10:33:48 AM UTC-5, Mark Rosedale wrote:
>>>
>>> Hey Matthias,
>>>
>>> Thanks for the response. So I do see some additional information that
>>> may help.
>>>
>>> So it appears that puppet does successfully install postgresql and
>>> postgresql-server and postgres92, and that explains what did get installed.
>>>
>>> Notice: /Stage[pre]/Yum::Repo/Exec[refresh-yum-cache]: Triggered
>>> 'refresh' from 1 events
>>> Notice:
>>> /Stage[main]/Postgresql::Install/Package[postgresql-8.1.23-10.el5_10]/ensure:
>>>
>>> created
>>> Notice:
>>> /Stage[main]/Postgresql::Install/Package[postgresql-server-8.1.23-10.el5_10]/ensure:
>>>
>>> created
>>> Error: Could not update: Execution of '/usr/bin/yum -d 0 -e 0 -y install
>>> postgresql92-server-9.2.8-1PGDG.rhel5' returned 1: postgres
>>> ql92-9.2.8-1PGDG.rhel5.x86_64 from vivox-postgresql has depsolving
>>> problems
>>> --> Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is
>>> needed by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-po
>>> stgresql)
>>> Error: Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is
>>> needed by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-p
>>> ostgresql)
>>> You could try using --skip-broken to work around the problem
>>> You could try running: package-cleanup --problems
>>> package-cleanup --dupes
>>> rpm -Va --nofiles --nodigest
>>> Wrapped exception:
>>> Execution of '/usr/bin/yum -d 0 -e 0 -y install
>>> postgresql92-server-9.2.8-1PGDG.rhel5' returned 1:
>>> postgresql92-9.2.8-1PGDG.rhel5.x8
>>> 6_64 from vivox-postgresql has depsolving problems
>>> --> Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is
>>> needed by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-po
>>> stgresql)
>>> Error: Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is
>>> needed by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-p
>>> ostgresql)
>>> You could try using --skip-broken to work around the problem
>>> You could try running: package-cleanup --problems
>>> package-cleanup --dupes
>>> rpm -Va --nofiles --nodigest
>>> Error:
>>> /Stage[main]/Postgresql::Install/Package[postgresql92-server]/ensure:
>>> change from absent to 9.2.8-1PGDG.rhel5 failed: Could n
>>> ot update: Execution of '/usr/bin/yum -d 0 -e 0 -y install
>>> postgresql92-server-9.2.8-1PGDG.rhel5' returned 1: postgresql92-9.2.8-1PG
>>> DG.rhel5.x86_64 from vivox-postgresql has depsolving problems
>>> --> Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is
>>> needed by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-po
>>> stgresql)
>>> Error: Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is
>>> needed by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-p
>>> ostgresql)
>>> You could try using --skip-broken to work around the problem
>>> You could try running: package-cleanup --problems
>>> package-cleanup --dupes
>>> rpm -Va --nofiles --nodigest
>>> Error: Could not update: Execution of '/usr/bin/yum -d 0 -e 0 -y install
>>> postgresql92-contrib-9.2.8-1PGDG.rhel5' returned 1: postgre
>>> sql92-9.2.8-1PGDG.rhel5.x86_64 from vivox-postgresql has depsolving
>>> problems
>>> --> Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is
>>> needed by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-po
>>> stgresql)
>>> Error: Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is
>>> needed by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-p
>>> ostgresql)
>>> You could try using --skip-broken to work around the problem
>>> You could try running: package-cleanup --problems
>>> package-cleanup --dupes
>>> rpm -Va --nofiles --nodigest
>>> Wrapped exception:
>>> Execution of '/usr/bin/yum -d 0 -e 0 -y install
>>> postgresql92-contrib-9.2.8-1PGDG.rhel5' returned 1:
>>> postgresql92-9.2.8-1PGDG.rhel5.x
>>> 86_64 from vivox-postgresql has depsolving problems
>>> --> Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is
>>> needed by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-po
>>> stgresql)
>>> Error: Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is
>>> needed by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-p
>>> ostgresql)
>>> You could try using --skip-broken to work around the problem
>>> You could try running: package-cleanup --problems
>>> package-cleanup --dupes
>>> rpm -Va --nofiles --nodigest
>>> Wrapped exception:
>>> Execution of '/usr/bin/yum -d 0 -e 0 -y install
>>> postgresql92-devel-9.2.8-1PGDG.rhel5' returned 1:
>>> postgresql92-9.2.8-1PGDG.rhel5.x86_64 from vivox-postgresql has depsolving
>>> problems
>>> --> Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is
>>> needed by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-postgresql)
>>> Error: Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is
>>> needed by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-postgresql)
>>> You could try using --skip-broken to work around the problem
>>> You could try running: package-cleanup --problems
>>> package-cleanup --dupes
>>> rpm -Va --nofiles --nodigest
>>> Error:
>>> /Stage[main]/Postgresql::Install/Package[postgresql92-devel]/ensure: change
>>> from absent to 9.2.8-1PGDG.rhel5 failed: Could not update: Execution of
>>> '/usr/bin/yum -d 0 -e 0 -y install postgresql92-devel-9.2.8-1PGDG.rhel5'
>>> returned 1: postgresql92-9.2.8-1PGDG.rhel5.x86_64 from vivox-postgresql has
>>> depsolving problems
>>> --> Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is
>>> needed by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-postgresql)
>>> Error: Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is
>>> needed by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-postgresql)
>>> You could try using --skip-broken to work around the problem
>>> You could try running: package-cleanup --problems
>>> package-cleanup --dupes
>>> rpm -Va --nofiles --nodigest
>>> Notice: /Stage[main]/Postgresql::Install/Package[postgresql92]/ensure:
>>> created
>>>
>>>
>>> So here is my install manifest
>>> class postgresql::install($version) {
>>> $postgresBase = $version ? {
>>> '8' => "postgresql",
>>> default => "postgresql92",
>>> }
>>>
>>> if ( $postgresBase == '8' ) {
>>> $postgresqlVersion = $::lsbdistrelease ? {
>>> '5.10' => "8.1.23-10.el5_10",
>>> '6.5' => "8.4.18-1.el6_4",
>>> default => "8.1.23-10.el5_10",
>>> }
>>> }
>>> else {
>>> $postgresqlVersion = $::lsbdistrelease ? {
>>> '5.10' => "9.2.8-1PGDG.rhel5",
>>> '6.5' => "9.2.8-1PGDG.rhel6",
>>> default => "9.2.8-1PGDG.rhel6",
>>> }
>>> }
>>>
>>> if ( $postgresBase != '8' ) {
>>> $removePackageList = [ "postgresql-8.1.23-10.el5_10",
>>> "postgresql-server-8.1.23-10.el5_10", ]
>>> package { $removePackageList:
>>> ensure => "purged",
>>> }
>>> }
>>>
>>> $packageList = [ "${postgresBase}",
>>> "${postgresBase}-server",
>>> "${postgresBase}-contrib",
>>> "${postgresBase}-devel", ]
>>>
>>> package { $packageList:
>>> ensure => $postgresqlVersion,
>>> }
>>> }
>>>
>>>
>>> So we have cloned all of the yum repos we need locally. I'm setting up
>>> all of those repos in stage => 'pre' which is set up to run before any of
>>> the other modules, including postgres. So yum is running and fully set up
>>> before postgres tries to install those packages.
>>>
>>> So what is failing is, but completes on the second run is
>>> Notice:
>>> /Stage[main]/Postgresql::Install/Package[postgresql92-server]/ensure:
>>> created
>>> Notice:
>>> /Stage[main]/Postgresql::Install/Package[postgresql92-contrib]/ensure:
>>> created
>>> Notice:
>>> /Stage[main]/Postgresql::Install/Package[postgresql92-devel]/ensure: created
>>>
>>> So after 2 runs I finally get all the packages that I needed
>>>
>>> rpm -qa | grep postgres
>>> postgresql92-9.2.8-1PGDG.rhel5
>>> postgresql92-devel-9.2.8-1PGDG.rhel5
>>> postgresql-libs-8.1.23-10.el5_10
>>> postgresql92-libs-9.2.8-1PGDG.rhel5
>>> postgresql92-server-9.2.8-1PGDG.rhel5
>>> postgresql92-contrib-9.2.8-1PGDG.rhel5
>>> postgresql-libs-8.1.23-10.el5_10
>>>
>>> Thoughts?
>>>
>>>
>>
>> Puppet has a limitation with respect to installing packages that it
>> manages each package separately. At times that can be a performance
>> issue. It may be that under certain circumstances it also presents a
>> dependency issue. Very likely if you try to perform package updates from
>> the command line in the same order that you observe Puppet trying to use,
>> then you will see the same depsolving problems. That might provide
>> additional insight into the nature of the problem.
>>
>> Supposing that you cannot / will not repackage postgreSQL, though, the
>> nature of the problem doesn't matter much. Since evidently there are
>> update orders that work, you can just instruct Puppet that it must manage
>> those package in such an order. For example:
>>
>> $packageList = [
>> "${postgresBase}-server",
>> "${postgresBase}-contrib",
>> "${postgresBase}-devel", ]
>>
>> package { ${postgresBase}:
>> ensure => $postgresqlVersion,
>> }
>>
>> ->
>>
>> package { $packageList:
>> ensure => $postgresqlVersion,
>> }
>>
>>
>> The order of the declarations in the file doesn't necessarily matter, but
>> the chaining operator (->) between the delcarations does. You can also use
>> one of the relational metaparameters ('require' would probably be best)
>> instead of a chain.
>>
>>
>> John
>>
>>
--
You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/puppet-users/82c7e95a-b4f9-44e1-af65-dfbc00694850%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.