来自网络位置的Ansible yml复制文件

时间:2017-07-03 10:59:44

标签: ansible

所以我有一个如下的ansible剧本:

#WINDOWS#
---
- hosts: windows   tasks:

  - name:  copy file
    raw: '"net use M: "\\somemachinename\someLocation" /user:username password"'
    raw: '"xcopy M:\isntaller.exe C:\installerlocation /Y"'
    raw: '"net use M: /delete /y"'

该文件确实存在于网络位置,并且用户名密码有效。任务不会报告任何错误。但该文件永远不会被复制。

有没有人知道我的playbook语法是否错误?或者是否有更好的方法在ansible设置中跨网络位置获取文件?

P.S。我无法访问ansible服务器。虽然我知道它是Red Hat Linux服务器。

2 个答案:

答案 0 :(得分:1)

第三个raw正在覆盖第一个和第二个,因为它们处于同一个任务中。请参阅YAML syntax overview

将其拆分为3个单独的任务:

#WINDOWS#
---
- hosts: windows
  tasks:

  - name: mount M
    raw: '"net use M: "\\somemachinename\someLocation" /user:username password"'

  - name: copy file
    raw: '"xcopy M:\isntaller.exe C:\installerlocation /Y"'

  - name: unmount M
    raw: '"net use M: /delete /y"'

另外,我不确定引号和双引号。你可能有太多的东西。

答案 1 :(得分:0)

尝试了很多组合后,这才最终适合我。看似hacky,但可能对可能面临同样情况的其他人有帮助。

我在一个http位置添加了一个批处理文件,其中ansible可以获取它并在机器上执行。

REM @echo off

set Source=%1%
set Destination=%2%

net use M: \\nwb-somemachinename /user:username password
xcopy /F M:\%Source% %Destination% /Y
net use M: /delete /y

yml文件如下所示:

#WINDOWS#
---
- hosts: windows
  tasks:

  - name: get batch file
    raw: httptool.exe http://somelocation/ourbatchfile.bat

  - name: run batch file
    raw: c:\location\ourbatchfile.bat location_remote_machine\installer.exe c:\location