Interesting, thanks for confirmation! It may be related to https://github.com/theforeman/smart_proxy_ansible/pull/16 that will appear in the new version.
Hi Marek,
i did a clean install on debian stretch with 1.21.0 Foreman.
The fix is commited there as far as i can see, but it does not solve the problem.
I’ve opened a bug report in redmine.
Maybe there is a chance you can look at this?
Thanks
Hi Folks,
i did fix this in my case.
After the hint from @Marek_Hulan about ansible core i was digging aroud if this package was installed → it was not.
So i tried to install it, which led to the following error:
apt-get install ruby-foreman-ansible-core
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following NEW packages will be installed:
ruby-foreman-ansible-core
0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
Need to get 0 B/6,104 B of archives.
After this operation, 36.9 kB of additional disk space will be used.
(Reading database … 95994 files and directories currently installed.)
Preparing to unpack …/ruby-foreman-ansible-core_2.2.0-1_all.deb …
Unpacking ruby-foreman-ansible-core (2.2.0-1) …
dpkg: warning: overriding problem because --force enabled:
dpkg: warning: trying to overwrite ‘/usr/bin/json_inventory.sh’, which is also in package ruby-smart-proxy-ansible 2.1.2-1
Setting up ruby-foreman-ansible-core (2.2.0-1) …
So i forced the installation with:
apt-get -o Dpkg::Options::=“–force-overwrite” install ruby-foreman-ansible-core
After that the package was installed i restarted foreman-proxy service and the first ansible job run with following hint:
[WARNING]: Unable to parse /usr/lib/ruby/bin/json_inventory.sh as an inventory
source
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note
that the implicit localhost does not match ‘all’
PLAY [all] *********************************************************************
skipping: no hosts matched
PLAY RECAP *********************************************************************
Exit status: 0
I then created the folder and created a symlink to the inventory script provided by ruby-smart-proxy-ansible:
mkdir /usr/lib/ruby/bin
ln -s /usr/bin/json_inventory.sh json_inventory.sh
After that the ansible runs are successfull.
I know: this kind of a dirty hack and needs to be investigated by the developers, but it’s a workaround for my current situation.
Thanks a lot for @Marek_Hulan for the hint with the fix - it finally leaded me to the “right” workaround.
@mmoll do you happen to know, where or how exclude it from smart-proxy-ansible? And I suppose we need to add ruby-foreman-ansible-core now. It was probably mistakenly removed in https://github.com/theforeman/foreman-packaging/commit/bfd6ea77fa76184c396b655715747702fa269f11
Thanks @bstorp for testing.
Thank you for your help Marek. In my case under ubuntu 16.04 i installed a lot off times with foreman installer with dynflow and remote execution enabled and configured all settings. And the port 8008 want open. I think something missing. I will do a clean installation and look. Best regards
do you happen to know, where or how exclude it from smart-proxy-ansible? And I suppose we need to add ruby-foreman-ansible-core now.
Tbh I lost track of all the ansible(_core) and ansible_proxy(_core) stuff long time ago…
Which ruby gem is json_inventory.sh
in? Which DEB package (the can only be one) should carry it?
Yeah, it does not help that we run that differently than in rpm stack. json_inventory.sh
seems to be now in both smart_proxy_ansible and foreman_ansible_core. I believe it should be only in foreman_ansible_core. We seem to be shipping it in both rpms, but one is in SCL, one is not.
In other words, could you please somehow blacklist the file from packaging on smart_proxy_ansible? Also the dependency technically can be Recommends
but I’d rather be more opinionated and keep it to Depends
. Ideally with comments than on Debian systems, foreman_ansible_core runs as part of smart proxy process. I’d do it myself, but I don’t know how to blacklist the file.
AFAIK foreman_ansible_core
is only used on the proxy side and should really be smart_proxy_ansible_core
.
As @Marek_Hulan said, that is also the package that actually calls the command and uses json_inventory.sh
. It shouldn’t be in smart_proxy_ansible
.
Would it be an option to do a new gem release of foreman_ansible_core without that file?
Probably yes, I’ll double check it can be safely removed. Though it won’t be in smart_proxy_ansible, foreman_ansible_core still needs it.
Hi Marek,
After upgrade to 1.22.1 ansible support seems to be broken again.
My old “workaround” does not work anymore.
I cannot get ansible to use winrm for connection - always trying to connect by ssh…
Still on debian…
Any hints?
Well, i did some debugging … seems like ansible_core 3.0.0 needs foreman-tasks-core 0.3.2 which is not available as deb file. The gem is available though.
After some testing, i did not find any solution for this, because there are several dependencies. foreman-tasks-core needs dynflow 1.2.0, which has some trouble with concurrent.
Can anyone give me a hint what to do? Ansible with winrm on debian is broken …
Thanks a lot.
Bastian