【问题标题】:How to fetch a file from a windows node with Ansible如何使用 Ansible 从 windows 节点获取文件
【发布时间】:2016-02-17 16:43:37
【问题描述】:

我想通过ansible获取一个在windows节点上创建的文件(info.txt)。我尝试使用 fetch 模块(在 linux 节点上适用于我),它似乎不适用于 Windows 客户端。以下是相关代码:

task:
  -name: Fetch a info file
   fetch: src=C:\info.txt dest=/home/user flat=yes 

我没有收到错误,但未获取文件。我在本地机器上运行 ubuntu。难道我做错了什么?谢谢

这是使用 -vvv 选项运行的 playbook 的输出:

If (Test-Path -PathType Leaf "C:\info.txt")
{
$sp = new-object -TypeName   System.Security.Cryptography.SHA1CryptoServiceProvider;
$fp = [System.IO.File]::Open("C:\info.txt[System.IO.Filemode]::Open, [System.IO.FileAccess]::Read);
[System.BitConverter]::ToString($sp.ComputeHash($fp)).Replace("-", "").ToLower();
$fp.Dispose();
}
ElseIf (Test-Path -PathType Container "C:\info.txt")
{
Write-Host "3";
}
Else 
{
Write-Host "1";
} 
<192.168.122.123> FETCH "C:\info.txt" TO "/home/diego/work/ansible_win/ex1"

更改:[win1] => {“更改”:true,“校验和”:null,“dest”:“/home/diego/work/ansible_win/ex1”,“调用”:{“module_args”:{ “dest”:“/home/diego/work/ansible_win/ex1”,“flat”:“yes”,“src”:“C:/info.txt”},“module_name”:“fetch”},“md5sum ": null, "remote_checksum": "9664e0d22d3e184eb206d60af29e340f620092d0", "remote_md5sum": null}

【问题讨论】:

  • 我认为您需要将您的 src 反斜杠更改为正斜杠,例如C:/info.txt.
  • 试过了,没什么区别..
  • 什么版本的ansible?
  • 您能否在运行 playbook 时添加 -vvv 开关并将日志输出粘贴到您的问题中?
  • 嗯....我正在运行 1.9.4,但行为相同。看起来它已经复制了文件,但在我的主目录中没有任何内容:/

标签: windows ansible fetch


【解决方案1】:

以下代码对我有用:

task:
  - name: Fetch a info file
    fetch: src=C:/info.txt dest=/home/user/info.txt flat=yes 

与之前的代码相比,我将“windows”反斜杠改为斜杠,并在dest 路径的末尾添加了文件名。

【讨论】:

  • 为了进一步了解这个工作原理,当fetch 看到一个不以/ 结尾的dest 时,它会尝试使用它在@ 中看到的确切名称创建一个文件987654326@。由于此文件名(可能)已被目录使用,因此无法检索该文件。如上所述指定完整文件名,或添加尾随/,将使fetch 按预期创建文件。替换 src 中的 \ 很可能没有什么效果。
猜你喜欢
  • 2021-09-28
  • 1970-01-01
  • 2018-01-23
  • 1970-01-01
  • 1970-01-01
  • 2021-07-04
  • 2021-11-07
  • 1970-01-01
相关资源
最近更新 更多