Running Foreman here with the following specs:
OS: Rocky Linux 8
Foreman: [3.12.1]
ruby 2.7.8p225
Puppet 7.34.0
At the end of last year we updated several foreman versions to end up at 3.12.1
Now it seems r10k is broken and we are unable to deploy new puppet code from our bitbucket to the foreman master host / puppet master.
I already tried installing a newer r10k version but this fails as well because it needs for instance a higher minitar version than we currently have. And that minitar version needs ruby 3.1
It’s unclear if Foreman 3.12 supports ruby 3.1 ?
I remember to solve it in the past we had installed multiple fast_gettext versions, so I can for instance install a version like 1.1.2 next to 2.4.0.
But I believe when doing this it breaks the foreman installer as well during upgrades.
So I’m not sure how to fix the dependency without breaking other dependencies at this point.
What is the right way to handle this?
I can’t seem to find any docu about it.
Anyone else uses r10k to deploy puppet code to linux and encountered this same situation ?
In order to not have to deal with these sorts of issues, we decided a long time ago that we would install r10k into the Puppet ruby environment.
We did this via /opt/puppetlabs/puppet/bin/gem install r10k, that makes r10k available as /opt/puppetlabs/puppet/bin/r10k. Depending on the Puppet version and Puppet’s ruby version, this might also require fiddling with gem versions a bit, but we now have this setup running and the only problems we head were usually solvable by reinstalling gems or installing specific versions.
I have no idea if this is the “correct” way to do this, but at least it works for us.
Hey there - confirming that we have the same issue in our environment, i.e. there was a ruby version incompatibility between r10k and Foreman 3.x.
Our workaround that has been in-place for almost a year, is to have r10k and Foreman running on different VMs. We have /etc/puppetlabs/code symlinked to a shared volume that’s mounted on several VMs. One VM exclusively runs r10k, and syncs Puppet code+modules to the volume. Other VM’s are running Puppet or Foreman, and consume the code+modules that are synced to the volume.
in general, we found Foreman to be the most stable to maintain when we decouple the services as much as possible, and use shared volumes for any data that needs to be shared or persisted (e.g. Puppet code, certs)