Download 使用Ansible从windows共享下载文件

Download 使用Ansible从windows共享下载文件,download,ansible,Download,Ansible,我在windows共享中有一个文件。我需要使用ansible下载此文件。 剧本 错误输出: "mode": "01777", "msg": "Request failed: <urlopen error [Errno 2] No such file or directory: \"'\\\\\\\\Winserver\\\\Share_Binary\\\\Installer-v6.tar.gz'\">", "owner": "root", "size"

我在windows共享中有一个文件。我需要使用ansible下载此文件。
剧本

错误输出:

    "mode": "01777",
    "msg": "Request failed: <urlopen error [Errno 2] No such file or directory: \"'\\\\\\\\Winserver\\\\Share_Binary\\\\Installer-v6.tar.gz'\">",
    "owner": "root",
    "size": 4096,
    "state": "directory",
    "uid": 0,
    "url": "file:'\\\\Winserver\\Share_Binary\\Installer-v6.tar.gz'"
“模式”:“01777”,
“msg”:“请求失败:”,
“所有者”:“根”,
“尺寸”:4096,
“状态”:“目录”,
“uid”:0,
“url”:“文件:'\\\Winserver\\Share\u Binary\\Installer-v6.tar.gz”

该文件已存在。当我在系统的文件浏览器中粘贴
\\Winserver\Share\u Binary\Installer-v6.tar.gz
时,我可以看到该文件。请给出建议。

不确定
get\u url
是否能够做到这一点。请试试这个:

  - name: Get file from smb.
    command:
      smbclient //Winserver/Share_Binary/ <pass> -U <user> -c "get Installer-v6.tar.gz"
      creates=/tmp/Installer-v6.tar.gz
-名称:从smb获取文件。
命令:
smbclient//Winserver/Share_Binary/-U-c“get Installer-v6.tar.gz”
创建=/tmp/Installer-v6.tar.gz

当然,您必须首先安装
smbclient
不确定
get\u url
是否能够做到这一点。请试试这个:

  - name: Get file from smb.
    command:
      smbclient //Winserver/Share_Binary/ <pass> -U <user> -c "get Installer-v6.tar.gz"
      creates=/tmp/Installer-v6.tar.gz
-名称:从smb获取文件。
命令:
smbclient//Winserver/Share_Binary/-U-c“get Installer-v6.tar.gz”
创建=/tmp/Installer-v6.tar.gz

当然,您必须首先安装
smbclient

,这可以通过一个凭证文件和3个Ansible任务来完成

首先,创建一个凭证文件(例如,
/home/youruser/smbshare.cred
),其中包含具有装载CIFS共享权限的服务帐户的用户名和密码:

username=your_service_account_name
password=your_service_account_password
确保您的远程ansible用户拥有该文件(如果您使用的是BENG,则为root用户),并且该文件具有0400权限。你可以考虑用AnEngy生成这个证书文件,和/或将来用ANIDES保险箱加密它。 任务1:使用在目标上装载SMB共享

- name: Mount SMB share
  mount:
    path: /mnt/smbshare
    src: '\\\\Winserver\\Share_Binary'
    fstype: cifs
    opts: 'credentials=/home/youruser/smbshare.cred'
    state: mounted
任务2:使用将文件复制到实际需要的任何位置

- name: Copy installer tarball to target
  copy:
    src: /mnt/smbshare/Installer-v6.tar.gz
    dest: /some/local/path/Installer-v6.tar.gz
    owner: foo
    group: foo
    mode: 0640
任务3:使用装载模块卸载SMB共享

- name: Unmount SMB share
  mount:
    path: /mnt/smbshare
    state: unmounted

注意:根据您的环境,您可能需要在任务1中的
选项:
参数中添加更多装载选项(请参阅mount.cifs(8)手册页)。

这可以通过一个凭证文件和3个Ansible任务来完成

首先,创建一个凭证文件(例如,
/home/youruser/smbshare.cred
),其中包含具有装载CIFS共享权限的服务帐户的用户名和密码:

username=your_service_account_name
password=your_service_account_password
确保您的远程ansible用户拥有该文件(如果您使用的是BENG,则为root用户),并且该文件具有0400权限。你可以考虑用AnEngy生成这个证书文件,和/或将来用ANIDES保险箱加密它。 任务1:使用在目标上装载SMB共享

- name: Mount SMB share
  mount:
    path: /mnt/smbshare
    src: '\\\\Winserver\\Share_Binary'
    fstype: cifs
    opts: 'credentials=/home/youruser/smbshare.cred'
    state: mounted
任务2:使用将文件复制到实际需要的任何位置

- name: Copy installer tarball to target
  copy:
    src: /mnt/smbshare/Installer-v6.tar.gz
    dest: /some/local/path/Installer-v6.tar.gz
    owner: foo
    group: foo
    mode: 0640
任务3:使用装载模块卸载SMB共享

- name: Unmount SMB share
  mount:
    path: /mnt/smbshare
    state: unmounted

注意:根据您的环境,您可能需要在任务1中的
opts:
参数中添加更多装载选项(请参阅mount.cifs(8)手册页)。

谢谢您的回答,但我不应该安装smbclient。正在寻找其他解决方法谢谢您的回答,但我不应该安装smbclient。寻找其他解决办法任务1对我不起作用。我得到一个类似“请使用systemd tty ask password代理工具输入密码”的提示,无法在此处输入密码。我忘记将
credentials=
添加到opts:参数中。我已经编辑了我的答案。我得到的错误为“msg”:“错误装载/mnt/smbshare:装载错误(112):主机已关闭\n请参阅装载.cifs(8)手册页(例如man mount.cifs)\n”。主机未关闭,我可以通过文件资源管理器手动访问任务1对我不起作用。我得到一个类似“请使用systemd tty ask password代理工具输入密码”的提示,无法在此处输入密码。我忘记将
credentials=
添加到opts:参数中。我已经编辑了我的答案。我得到的错误为“msg”:“错误装载/mnt/smbshare:装载错误(112):主机已关闭\n请参阅装载.cifs(8)手册页(例如man mount.cifs)\n”。主机未关闭,我可以通过文件资源管理器手动访问