Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Node executor ignores "Ansible binaries path" option #331

Open
polski-g opened this issue Feb 2, 2023 · 10 comments
Open

Node executor ignores "Ansible binaries path" option #331

polski-g opened this issue Feb 2, 2023 · 10 comments

Comments

@polski-g
Copy link

polski-g commented Feb 2, 2023

I have ansible installed into a Python virtualenv. (Let's assume I will want a separate ansible install for every Rundeck project)

It is not present on the $PATH. It is at /var/lib/rundeck/_workspace/ansible/venv/bin/ansible-playbook

The Ansible default node executor for my project has the path for the ansible binaries set:

ansible-binaries-dir-path=/var/lib/rundeck/_workspace/ansible/venv/bin
project.ansible-binaries-dir-path=/var/lib/rundeck/_workspace/ansible/venv/bin
resources.source.2.config.ansible-binaries-dir-path=/var/lib/rundeck/_workspace/ansible/venv/bin/

You can see from strace output, when I run an ad-hoc ansible playbook job, that rundeck is just trying to find the ansible-playbook binary on $PATH instead of the exact directory I gave it in the setup.

Rundeck should look in the directory specified (ansible-binaries-dir-path) in the project setup for the binary, should it not?

[rundeck@rundeck ~]$ id 
uid=1000(rundeck) gid=1000(rundeck) groups=1000(rundeck) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

[rundeck@rundeck ~]$ which ansible-playbook
/usr/bin/which: no ansible-playbook in (/var/lib/rundeck/.local/bin:/var/lib/rundeck/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin)

[rundeck@rundeck ~]$ ls -l /var/lib/rundeck/_workspace/ansible/venv/bin/ansible-playbook 
-rwxrwxr-x. 1 rundeck rundeck 257 Feb  2 13:50 /var/lib/rundeck/_workspace/ansible/venv/bin/ansible-playbook

[root@rundeck keys]# strace -f -p 76664 2>&1 | grep ansible-playb
[pid 77444] execve("/var/lib/rundeck/.local/bin/ansible-playbook", ["ansible-playbook", "/tmp/rundeck/ansible-runner64188"..., "-l", ...
[pid 77444] execve("/var/lib/rundeck/bin/ansible-playbook", ["ansible-playbook", "/tmp/rundeck/ansible-runner64188"..., "-l", ...
[pid 77444] execve("/usr/local/bin/ansible-playbook", ["ansible-playbook", "/tmp/rundeck/ansible-runner64188"..., "-l", ...
[pid 77444] execve("/usr/bin/ansible-playbook", ["ansible-playbook", "/tmp/rundeck/ansible-runner64188"..., "-l", ...
[pid 77444] execve("/usr/local/sbin/ansible-playbook", ["ansible-playbook", "/tmp/rundeck/ansible-runner64188"..., "-l", ...
[pid 77444] execve("/usr/sbin/ansible-playbook", ["ansible-playbook", "/tmp/rundeck/ansible-runner64188"..., "-l", ...
@edrik
Copy link

edrik commented Mar 5, 2023

Can confirm this, encountered the same while trying to use ansible from a custom venv path.
Using the same venv binary path for importing nodes from the ansible inventory works.

@dingouerinitx
Copy link

dingouerinitx commented May 17, 2023

I have a related problem and would like to have someone confirme that this is not just a problem with my setup and is related to this.

Brief: The "Ansible binaries directory path" in the Project Settings is not safed after clicking "Save" button. No error appears.

Rundeck: 4.13.0
Ansible-Plugin: ansible-plugin-3.2.3.jar

To reproduce the issue/bug do:

  1. Go to Project -> Project Settings -> Edit Configuration
  2. Change to Tab "Default Node Executor" -> "Ansible Ad-Hoc Node Executor"
  3. Set "Ansible binaries directory path" to your venv bin or any value (in my case /etc/ansible/venv-ansible/bin)
  4. Adjust other mandatory fields
  5. Click "Save"

You will jump back to your project, so go back to the Settings via (Step 1 and 2 above)

The "Ansible binaries directory path" field is still empty and not set in my case.

Before: Saving
image

After: Saving and Return
image

Question 1: Can this be verfied as a bug or setup issue on my side? Thanks for clarification.

Question 2: Where is/should the value be saved on the machine? In DB, on Disk? I checked the DB and could not find it so far. (Using postgresql). I checked under /etc/rundeck in the *.properties files and could not find it either.

@MegaDrive68k
Copy link

Confirmed on the latest Rundeck / Plugin version.

@andrewm659
Copy link

I was told there is a work around. I was given this as the work around - https://imgur.com/9fiCwoT
Is there a way to this at the project level? I would have to changes lots of projects to resolve this.

@andrewm659
Copy link

Is anyone using the h2 database while having this issue? I'm using it because i'm still testing.

@andrewm659
Copy link

Hello, any update on when this will get resolved? It is blocking our ability to update and migrate the application.

@andrewm659
Copy link

So I just installed the rpm version of rundeck on CentOS Stream 9. I used the default DB (h2). I then created a new project and went back into the settings and was able to configure the Ansible path. After hitting save it worked. Also this was in the Edit Nodes -> Sources -> Ansible Resource Model Source. But this works!!! Has anyone else tried this?

@dingouerinitx
Copy link

dingouerinitx commented Aug 7, 2023

Whats the progress on this? Is any java developer looking into this?

@andrewm659
Copy link

This is a bit of a show stopper for us. Not sure how others are getting around this....

@simon-c-msc
Copy link
Contributor

simon-c-msc commented Aug 17, 2023

I have a related problem and would like to have someone confirme that this is not just a problem with my setup and is related to this.

Brief: The "Ansible binaries directory path" in the Project Settings is not safed after clicking "Save" button. No error appears.

Rundeck: 4.13.0 Ansible-Plugin: ansible-plugin-3.2.3.jar

To reproduce the issue/bug do:

  1. Go to Project -> Project Settings -> Edit Configuration
  2. Change to Tab "Default Node Executor" -> "Ansible Ad-Hoc Node Executor"
  3. Set "Ansible binaries directory path" to your venv bin or any value (in my case /etc/ansible/venv-ansible/bin)
  4. Adjust other mandatory fields
  5. Click "Save"

You will jump back to your project, so go back to the Settings via (Step 1 and 2 above)

The "Ansible binaries directory path" field is still empty and not set in my case.

Before: Saving image

After: Saving and Return image

Question 1: Can this be verfied as a bug or setup issue on my side? Thanks for clarification.

Question 2: Where is/should the value be saved on the machine? In DB, on Disk? I checked the DB and could not find it so far. (Using postgresql). I checked under /etc/rundeck in the *.properties files and could not find it either.

Looks like it's solved in the latest version (4.15) but sadly it's still not used at the job level.

My bad, it's still an issue in 4.15.0 :(

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants