I think you will get sort of „cannot redeclare“… otherwise I agree, it would 
work like you suggest.

But with the solution you propose, I guess I will have one structure for the 
packages to be installed and another for the ones to be removed.

But I want to manage only one list of packages… more save against errors 
managing the list… I have those packages all over the place...

I will have to think along the lines of single and double quoting… thx

> Am 12.10.2020 um 13:56 schrieb A Manzer <[email protected]>:
> 
> If you redeclare the list outside the .each block, you'll end up with the 
> same list.  Also if you redeclare it outside, against the $php_remove array, 
> you'll get something weird.
> 
> If you redeclare it inside the .each block, it'll be local to that block, get 
> destroyed on the second run, and you'll end up with a fresh copy for the next 
> value of your $php_remove array.
> 
> You need to make sure you don't reuse variable names so you don't get 
> confused, but it'll work.
> 
> 
> If you want to use the same package list in both places, you may be able to 
> play some games with single- and double-quoting, but I don't think I'd 
> recommend that.
> 
> On Monday, October 12, 2020 at 7:51:12 AM UTC-4 [email protected] wrote:
> thx for the smart ;-)
> 
> but when I redeclare the list, I end up keeping two lists of packages. The 
> guy who I am, I will definitely fuck this up regularly… and that’s back to 
> the root of my problem… I would like to somehow reuse the $myPackages 
> structure with different values for $php_version. 
> 
> Mhmm… as I write this this sounds like a use for a template…
> 
> Regards
> Jochen
> 
> 
>> Am 12.10.2020 um 13:46 schrieb A Manzer <[email protected] 
>> <applewebdata://0FC03648-8DD5-4731-9B12-F00B49DDDB9B>>:
>> 
> 
>> Seems pretty smart to me, tbh.
>> 
>> The only problem is that $myPackages is constant, so already includes the 
>> "7.4" values from $php_version.  You'll need to declare a new list (because 
>> you can't change variables) inside your .each block.
>> 
>> $php_remove.each | String $php_str_remove | { 
>>      $myRemovePackages = [
>>          "php${php_str_remove}-xml",
>>          "php${php_str_remove}-zip",
>>          "php${php_str_remove}-curl",
>>          "php${php_str_remove}-mbstring",
>>          "libapache2-mod-php${php_str_remove}",
>>     ] 
>>      ensure_packages($myRemovePackages,
>>          { 
>>               'ensure' => 'absent', 
>>          }  )
>>      }
>>  }
>> 
>> On Monday, October 12, 2020 at 5:10:34 AM UTC-4 [email protected] 
>> <http://gmail.com/> wrote:
>> Hi all,
>> 
>> I posted a question on Stackoverflow before the weekend, but no responses 
>> and not many views yet, unfortunately. So please forgive me asking this 
>> again here. refactor ensure_packages to switch version of installed packages 
>> https://stackoverflow.com/q/64284862/13088564?sem=2 
>> <https://stackoverflow.com/q/64284862/13088564?sem=2>
>> 
>> 
>> I am successfully installing several PHP modules by version with puppet on 
>> Debian linux like this:
>> 
>> $php_version = '7.3' 
>> ensure_packages([ 
>>     "php$php_version-xml", 
>>      "php$php_version-zip", 
>>      "php$php_version-curl", 
>>      "php$php_version-mbstring", 
>>      "libapache2-mod-php$php_version",
>>  ], 
>>  { 'ensure' => 'present', } )
>> now I want to prepare for an update from PHP 7.3 to 7.4. This basically 
>> works, but the 7.3 packages stay installed. I would like to adapt the code 
>> to remove the old packages. I am looking for a way to reuse the list of 
>> packages of modules for uninstalling.
>> 
>> I am thinking of a signature like this
>> 
>> class profile::software::apache (
>>      $php_version = '7.4',
>>      $php_remove = ['7.0‘, ‘7.3']
>>     , #... 
>> ) {
>> 
>> $myPackages = [
>>      "php$php_version-xml",
>>      "php$php_version-zip",
>>      "php$php_version-curl",
>>      "php$php_version-mbstring",
>>      "libapache2-mod-php$php_version",
>>  ] 
>>  
>> ensure_packages($myPackages, {
>>      'ensure' => 'present', 
>>  } ) 
>> 
>>  $php_remove.each | String $php_version | { 
>>      ensure_packages($myPackages,
>>      { 
>>           'ensure' => 'absent', 
>>      }  )
>>  }
>>  }
>> Is there a way to solve this?
>> 
>> thx
>> 
>> 
> 
>> -- 
>> 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] 
>> <applewebdata://0FC03648-8DD5-4731-9B12-F00B49DDDB9B>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/puppet-users/470cea3c-b64f-4666-827f-0bccfb101afcn%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/puppet-users/470cea3c-b64f-4666-827f-0bccfb101afcn%40googlegroups.com?utm_medium=email&utm_source=footer>.
> 
> 
> -- 
> 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] 
> <mailto:[email protected]>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/puppet-users/16877536-fb28-4234-a5c6-712b087dfce3n%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/puppet-users/16877536-fb28-4234-a5c6-712b087dfce3n%40googlegroups.com?utm_medium=email&utm_source=footer>.

-- 
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/F64BD6EB-C6CD-4261-8A5E-11C3B3DB41BF%40gmail.com.

Reply via email to