Hammer command in Puppet exec fails (foreman 1.20.1)

175 Views Asked by At

I am trying to use Hammer in Foreman 1.20.1 on Centos 7.6 to refresh proxy features (or just about any other command other than --version) in a Puppet exec. The command I am using works fine at the shell. It fails in Puppet exec with:

Error: undefined local variable or method `dotfile' for Notice: /Stage[main]/Profiles::Test/Exec[test]/returns: Did you mean? @@dotfile Notice: /Stage[main]/Profiles::Test/Exec[test]/returns: Error: No such sub-command 'proxy'.

The code I am using is:

class profiles::test{
  exec {'test':
    command => '/usr/bin/hammer proxy refresh-features --name $(hostname)',
  }
}
include profiles::test

I'm not concerned about idempotency as it will have a refreshonly, I just want to get the command to work.

I have tried adding other options such as path, user, environment etc to no avail. Any help appreciated.

1

There are 1 best solutions below

2
On

from clues I found at https://github.com/awesome-print/awesome_print/issues/316 and https://grokbase.com/t/gg/puppet-users/141mrjg2bw/problems-with-onlyif-in-exec, it turns out that the HOME environment has to be set. So the working code is:

  exec {'test':
    command     => '/usr/bin/hammer proxy refresh-features --name $(hostname)',
    environment => ["HOME=/root"],
    refreshonly => true,
  }

f'ing ruby!