所以我有一个如下的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服务器。
答案 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