bren85
(bren85)
1
I am trying to source a script on a remote host so I can use the functions in it.
I have tried:
shell: source [filename.sh] && [function name]
args:
executable: /bin/bash
and a lot of variations on this.
Now I have managed to source the script locally by adding the source command to the .bash_profile file.
The functions are available to me when i log into the remote host and run the functions manually from the terminal.
When I send:
shell: [function name]
to the remote host, it comes up:
“/bin/bash: [function name]: command not found”
Both control and remote node are running /bin/bash
Is there something I am missing?
Yes, you need a login shell. The Ansible shell module does not use a login shell.
Try:
shell: bash -lc 'source [filename.sh] && [function name]'
bren85
(bren85)
3
Thanks for the quick reply,
That didn’t work either, still comes up with the same error:
“module_args”: {
“_raw_params”: “bash -lc ‘source /root/vBNG/env.sh && ins’”,
“_uses_shell”: true,
“argv”: null,
“chdir”: null,
“creates”: null,
“executable”: null,
“removes”: null,
“stdin”: null,
“warn”: false
}
},
“msg”: “non-zero return code”,
“rc”: 127,
“start”: “2019-04-30 16:54:34.129834”,
“stderr”: “bash: ins: command not found”,
“stderr_lines”: [
“bash: ins: command not found”
I have not tested this. This if off the top of my head:
You may have to avoid using && and call it like "bash -lc 'source /root/vBNG/env.sh ins'".
Or put everything in a single script including the the `source` command.