How to get fetch files from non-inventory servers ?

Hi all,

How to get fetch files from non-inventory servers ?

After searching in docs for 2 days, I cannot find any explicit scp/sftp module.
This could be due to fact that ansible already does file transfers bw servers by scp/sftp.

But I want to fetch some file on ansible server every time a playbook is run. from a server thats not in inventory file.
I have setup a restricted user ( with password ) on sftp server.

Right now I download that file via https

  • name: Download release from “{{https_release_url}}”
    get_url: url=“{{https_release_url}}” url_username=“{{https_deploy_user}}” url_password=“{{https_deploy_pass}}” force=yes validate_certs=no dest=“{{playbook_dir}}/release/latest-release.aes”

I want this transfer over sftp.
Any help /advise / pointer in right direction is highly welcome.

I am on ansible 2.1.0.0 if that matters.

Thanks,
Kapil

There'd be no harm in putting the server in the inventory ( with
ansible_ssh_user set to the restricted user)
if you want to take advantage of the built-in mechanisms. Nothing says
everything in the inventory has
to be actively managed by Ansible.

Pull the file locally at the start of the play and push it up to wherever.

You can use shell/command modules to make an sftp. What’s the issue here?

You can do another dirty trick use delegate to switch server but that would require the server already in inventory.

So I would use shell module and run my scp the old way.

M B

Could have done this, but simple sftp doesnt work with password provided over command line. needs another layer of ssh-pass / expect-send
I am missing scp with username/password.

Last thing I can try discussing with end users is instead of user/password … gather all public keys of ansible-servers and add them in sftp server.

You can use fetch module with delegate_to that server, you might also need to set other connection parameters on that task.