opensearch-project / ansible-playbook

🤖 A community repository for Ansible Playbook of OpenSearch Project.
https://opensearch.org/
Apache License 2.0
81 stars 97 forks source link

[BUG][ansible-playbook] conflicting variable name used in different roles #141

Open MattBianco opened 1 year ago

MattBianco commented 1 year ago

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:

  1. Clone the ansible-playbook repository
  2. 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
  3. Add some hosts to the inventory, with at least 1 dashboards host and at least 1 os-cluster host
  4. Run the playbook according to README.md
  5. 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
  6. 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
  7. Run the playbook again, like in step 5.
  8. 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):

MattBianco commented 1 year ago

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...

Divyaasm commented 11 months ago

Hi @MattBianco, please feel free to contribute for the issue. Thanks

peterzhuamazon commented 11 months ago

Probably changing os_plugin_bin_path to os_dashboards_plugin_bin_path is better?

bbarani commented 8 months ago

@peterzhuamazon @MattBianco Do you have any updates?