Powershells Ansible中的复制项

时间:2018-09-10 08:10:08

标签: powershell ansible

我对ansible有疑问。我需要使用ansible任务将网络中的一台计算机上的某些内容复制到主机(Windows)上。

我测试了许多不同的方法,包括将powerscript文件作为可完成的任务,并使用win_shell直接包含powershell CMD-let。

在每种情况下,当我在Powershell窗口中直接在主机上调用Copy-Item时,一切正常。但是在Ansible打电话之后,我得到了

Copy-Item : Cannot find path '//[ip]/[path]/[file]' because it does not exist.

即时通讯记录到主机时,我在ansible和远程桌面连接中都使用同一用户。

有人知道会发生什么吗?

可行任务:

  - name: Install 7Zip
    win_shell: |
      $path = '//[ip]/[path]/[file]'
      Copy-Item $path -Destination "C:/[Location]"
    tags:
      - 7zip

[ip][path][file][location]只是我为了避免使用波兰文的文件夹名称和我的Intranet IP困扰所有人而设置的模拟。

在powershell命令中与在ansible中完全相同:

PS C:\Users\ansibler> $path = '//[ip]/[path]/[file]'
PS C:\Users\ansibler> Copy-Item $path -Destination "[location]"

3 个答案:

答案 0 :(得分:3)

好,我解决了。

双跳是一个问题。解决方案是使用“ ansible_become”并在主机中重新认证用户:

vars:
  ansible_become: yes
  ansible_become_method: runas
  ansible_become_flags: logon_type=new_credentials logon_flags=netcredentials_only
  ansible_become_user: [login]
  ansible_become_pass: [password]

答案 1 :(得分:0)

您正在尝试使用UNC路径,UNC路径使用反斜杠。

- name: Install 7Zip
    win_shell: |
      $path = '\\[ip]\[path]\[file]'
      Copy-Item $path -Destination "C:/[Location]"
    tags:
      - 7zip

复制文件的最佳方法是使用win_copy模块。

- name: Install 7Zip
    win_copy:
      src: '\\[ip]\[path]\[file]'
      dest: "C:\[Location]"
      remote_src: True

更新:

您收到的错误是由于此处存在双跳。我可以通过在尝试复制之前映射驱动器来向您展示一种解决方法,该解决方法可以解决双跳问题。

- name: Install 7Zip
    win_shell: |
      net use \\[ip]\[path] password /user:username 2>&1
      $path = '\\[ip]\[path]\[file]'
      Copy-Item $path -Destination "C:/[Location]"
    tags:
      - 7zip

答案 2 :(得分:0)

对我来说,它是这样工作的:

 - name: Run Shell Copy Cmd
   win_shell: Copy-Item '\\remote\public\foo\*' C:\Windows\Temp\bar
   become: yes
   become_method: runas
   become_user: vagrant
   vars:
     ansible_become_password: "pass"

我在win_copy模块上尝试过相同的方法,但是永远无法使其工作