Sourcing a script on a remote host to use the functions in the script

27 views
Skip to first unread message

bren85

unread,
Apr 30, 2019, 11:32:23 AM4/30/19
to Ansible Project
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?

Sudheer S

unread,
Apr 30, 2019, 11:47:25 AM4/30/19
to ansible...@googlegroups.com
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]'

-

Sudheer S

bren85

unread,
Apr 30, 2019, 11:56:22 AM4/30/19
to Ansible Project
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"

Sudheer S

unread,
May 1, 2019, 10:39:15 AM5/1/19
to ansible...@googlegroups.com

On 30/04/19 9:26 PM, bren85 wrote:
> 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.

-

Sudheer S

Reply all
Reply to author
Forward
0 new messages