ansible-playbook
ansible-playbook copied to clipboard
[BUG][ansible-playbook] conflicting variable name used in different roles
Describe the bug Variable os_plugin_bin_path is used for different purposes in the dashboards role and the opensearch role. For the dashboards plays, it's intended to point to the opensearch-dashboards-plugin executable, whilst for the opensearch plays, it should point to the opensearch-plugin executable.
This means that you're basically forced to install everything under /usr/share/ (unless you want to clone the repo twice, and maintain separate trees for opensearch and for opensearch-dashboards),
or to edit the ./roles/linux/dashboards/defaults/main.yml and ./roles/linux/opensearch/defaults/main.yml separately for your custom settings.
I would expect ./inventories/opensearch/group_vars/all/all.yml to be the place for custom overrides of the defaults ?
To Reproduce Steps to reproduce the behavior:
- Clone the ansible-playbook repository
- Tweak inventories/opensearch/group_vars/all/all.yml to your liking, adding something like this to the bottom:
iac_enable: true
os_home: /opt/opensearch
os_conf_dir: /opt/opensearch/config
- Add some hosts to the inventory, with at least 1 dashboards host and at least 1 os-cluster host
- Run the playbook according to README.md
- See the task
TASK [linux/opensearch : Security Plugin configuration | Initialize the opensearch security index in opensearch with default configs] *****fail with:
bash: /usr/share/opensearch/plugins/opensearch-security/tools/securityadmin.sh: No such file or directory
- Add to inventories/opensearch/group_vars/all/all.yml:
os_plugin_bin_path: /opt/opensearch/bin/opensearch-plugin
os_sec_plugin_conf_path: /opt/opensearch/config/opensearch-security
os_sec_plugin_tools_path: /opt/opensearch/plugins/opensearch-security/tools
- Run the playbook again, like in step 5.
- See the task
TASK [linux/dashboards : Get all the installed dashboards plugins]fail with sudo: /opt/opensearch/bin/opensearch-plugin: command not found.
Expected behavior I expected it to be possible to install opensearch-dashboards with this playbook, even with opensearch data/master data installed on it's own file system mounted somewhere else than underneath /usr/share/.
Playbook Name
opensearch.yml
Role name
linux/dashboards
Screenshots
TASK [linux/dashboards : Get all the installed dashboards plugins] ************************************************************************
fatal: [dashboards-hostname]: FAILED! => {"changed": true, "cmd": ["sudo", "-u", "opensearch-dashboards", "/opt/opensearch/bin/opensearch-plugin", "list"], "delta": "0:00:00.018502", "end": "2023-09-08 12:24:12.839548", "msg": "non-zero return code", "rc": 1, "start": "2023-09-08 12:24:12.821046", "stderr": "sudo: /opt/opensearch/bin/opensearch-plugin: command not found", "stderr_lines": ["sudo: /opt/opensearch/bin/opensearch-plugin: command not found"], "stdout": "", "stdout_lines": []}
Host/Environment (please complete the following information):
- Ansible Version: 2.14.5
- Playbook Version: commit 1b9c5f98f5c8abcc5d2c24b810a5e009573f47d1
I think it would perhaps be better to extrapolate the binaries' paths from os_home and os_dashboards_home instead of having a dedicated variable with the pathname of the plugin executable?
Possibly even deducing "everything" from os_home, such as configs, tools, etc.
And /usr/share/ is a very strange location for storing changing, node-specific, data, by the way...
Hi @MattBianco, please feel free to contribute for the issue. Thanks
Probably changing os_plugin_bin_path to os_dashboards_plugin_bin_path is better?
@peterzhuamazon @MattBianco Do you have any updates?