I am trying to add data to my mongodb database using Ansible. When I run the mongodb command on my localhost, the data gets added to the database. Also the task responsible for uploading to the database is carried out on localhost where I can confirm mongo is installed.
This is my playbook
- hosts: "master" become: true tasks: - name: Store dashboard token shell: /snap/bin/microk8s kubectl create token default register: dashboard_token ignore_errors: true - name: Save Kubernetes dashboard token set_fact: dashboard_token: "{{ dashboard_token.stdout }}" - name: "Add K8S Token and Hash to dummy host" add_host: name: "DASH_TOKEN" token: "{{ dashboard_token }}"- hosts: localhost become_method: sudo tasks: - name: Print dashboard token debug: msg: "{{ hostvars['DASH_TOKEN'].token }}" - name: Insert dashboard token into MongoDB with a name shell: | mongo "mongodb+srv://username:password@ffke.dvnthdhml3.mongodb.net/TEST?retryWrites=true&w=majority&appName=TEST" --eval 'db.dashboard_tokens.insertOne({"name": '{{ token_name }}', "token": '{{ dashboard_token }}'})' vars: token_name: "{{ kubeconfig_name }}" dashboard_token: "{{ hostvars['DASH_TOKEN'].token }}"This is the error I am getting
fatal: [localhost]: FAILED! => {"changed": true,"cmd": "mongo \"mongodb+srv://username:password@ffke.dvnthdhml3.mongodb.net/TEST?retryWrites=true&w=majority&appName=TET\" --eval 'db.dashboard_tokens.insertOne({\"name\": 'amina4', \"token\": 'eyJhbGciOiJSUzI1NiIsImtpZCI6ImZ6dWR3WmYzSDZGakVQOVZMa3dId0RPZnpka0xhalNEZ1dQM25XTDVDMlEifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjIl0sImV4cCI6MTcxODY3MjMxNSwiaWF0IjoxNzE4NjY4NzuMcxCwwgEhVqKI9gB231n8cVF2Hp23dR7p1ecWIbwkOtLcMl7OIXhVI7rEBTNxcnw5mNX8hMvDGIotyP1S4oOhYeDUMPYm9iTgutB8ASyFx_TiYCf5S4kN_-nuGSKOo3J3EJlQWCshuIgLeGQH9aYlAhMrilBgCh9wloXPBW58jIBZS-'})'\n","delta": "0:00:00.007474","end": "2024-06-17 23:58:37.494578","invocation": {"module_args": {"_raw_params": "mongo \"mongodb+srv://username:password@ffke.dvnthdhml3.mongodb.net/TEST?retryWrites=true&w=majority&appName=TEST\" --eval 'db.dashboard_tokens.insertOne({\"name\": 'amina4', \"token\": 'eyJhbGciOiJSUzI1NiIsImtpZCI6ImZ6dWR3WmYzSDZGakVQOVZMa3dId0RPZnpka0xhalNEZ1dQM25XTDVDMlEifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjIl0sImV4cCI6MTcxODY3MjMxNSwiaWF0IjoxNzE4NjY4NzuMcxCwwgEhVqKI9gB231n8cVF2Hp23dR7p1ecWIbwkOtLcMl7OIXhVI7rEBTNxcnw5mNX8hMvDGIotyP1S4oOhYeDUMPYm9iTgutB8ASyFx_TiYCf5S4kN_-nuGSKOo3J3EJlQWCshuIgLeGQH9aYlAhMrilBgCh9wloXPBW58jIBZS-'})'\n","_uses_shell": true,"argv": null,"chdir": null,"creates": null,"executable": null,"removes": null,"stdin": null,"stdin_add_newline": true,"strip_empty_ends": true } },"msg": "non-zero return code","rc": 127,"start": "2024-06-17 23:58:37.487104","stderr": "/bin/sh: mongo: not found","stderr_lines": ["/bin/sh: mongo: not found" ],"stdout": "","stdout_lines": []}When I tried this for my task;
- name: Insert dashboard token into MongoDB with a name shell: | /usr/bin/mongo mongodb+srv://username:password@ffke.dvnthdhml3.mongodb.net/TEST?retryWrites=true&w=majority&appName=TEST --eval db.dashboard_tokens.insertOne({"name": '{{ token_name }}', "token": '{{ dashboard_token }}'}) vars: token_name: "{{ kubeconfig_name }}" dashboard_token: "{{ hostvars['DASH_TOKEN'].token }}"I got this new error;
"stderr": "/bin/sh: syntax error: unexpected \"(\"","stderr_lines": ["/bin/sh: syntax error: unexpected \"(\"" ],My expected result is for the command to run in my localhost where mongo is already installed.