Gui*_*meN 3 windows ansible ansible-playbook
我正在构建剧本来部署 Windows 应用程序,该应用程序需要在应用程序本身之前安装一些先决条件(Visual C++ 运行时和 dotNet 框架)。这些先决条件是 .EXE 文件并且都包含在特定文件夹中。
我想构建一个 Ansible 剧本,它将(除其他外)使用参数“/install /passive”执行 preriquisites 文件夹中的每个 .EXE 文件
我不想在我的剧本中指定每个文件名。
我的想法是首先使用“win_file”模块找到先决条件设置文件,将结果分配给一个变量,然后迭代该变量并为其包含的每个文件运行“win_command”模块。
不幸的是,我无法使用 register 语句将 win_find 结果分配给变量,它根本不执行任何操作。
这是我尝试过的:
- hosts: "{{ target }}"
tasks:
- name: Find files in path
win_find:
register: myvar
paths: E:\Temp\Prognosis_11.2\Prerequisites
- name: debug
debug:
msg: "{{ myvar }}"
Run Code Online (Sandbox Code Playgroud)
使用 -v(详细模式)运行时剧本的输出:
任务 [在路径中查找文件] ************************************************ ****************************************************** ****************************************************** ***********
ok: [SMN001] => {"changed": false, "examined": 5, "files": [{"attributes": "Archive", "checksum": "3049a85843eaf65e89e2336d5fe6e85e416797be", "15958697be", "15958609" ": ".exe", "filename": "NDP46-KB3045557-x86-x64-AllOS-ENU.exe", "isarchive": true, "isdir": false, "ishidden": false, "islnk": false , "isreadonly": false, "isshared": false, "lastaccesstime": 1550942958.6690862, "lastwritetime": 1459427148, "owner": "BUILTIN\Administrators", "path": "E:\Temp\PrognosisPregnosis_11.2\ \NDP46-KB3045557-x86-x64-AllOS-ENU.exe”,“大小”:65444688},{“属性”:“存档”、“校验和”:“8bf41ba9eef02d30635a10433817dbb6886da5a2”、“创建时间”:1550942958.7627323、“扩展名”:“.exe”、“文件名”:“vcredist64.is”、“false”、“假” ": false, "islnk": false, "isreadonly": false, "isshared": false, "lastaccesstime": 1550942958.7627323, "lastwritetime": 1489501866, "owner": "BUILTIN\Administrators", "path": "E :\Temp\Prognosis_11.2\Prerequisites\vcredist2013_x64.exe", "size": 7194312}, {"attributes": "Archive", "checksum": "df7f0a73bfa077e483e51bfb97f5e2creation.597f5e2ecetion.597f5e2ecetion",7975e2ecetion",795000".exe", "filename": "vcredist2013_x86.exe", "isarchive": true, "isdir": false, "ishidden": false, "islnk": false, "isreadonly": false, "isshared": false, "lastaccesstime": 1550942958.7779777, "lastwritetime": 1489501866, "owner": "BUILTIN\Administrators", "path": "E:\Temp\Prognosis_11.2\Prerequisites\vcredist2013_x86,"size39.exe." {“属性”:“存档”,“校验和”:“007064d974a55940838f19cd0b0e3aaf27ca06a7”,“创建时间”:1550942958.7939014,“扩展名”:“.exe”,“exevc_red6:true1”,“文件名”,“文件名”4: “:假,“隐藏”:假,“islnk": false, "isreadonly": false, "isshared": false, "lastaccesstime": 1550942958.7939014, "lastwritetime": 1488965662, "owner": "BUILTIN\Administrators", "path": "E:\Temp1\Prognosis_1 .2\Prerequisites\vcredist2017_x64.exe", "size": 15261400}, {"attributes": "Archive", "checksum": "ba1f7e7cace62f7c55ab948cd3b29acc4e8e2329", "15261400", "1565759", "1565789"文件名": "vcredist2017_x86.exe", "isarchive": true, "isdir": false, "ishidden": false, "islnk": false, "isreadonly": false, "isshared": false, "lastaccesstime": 1550942958.8406758 , "上次写入时间":1488965662, "owner": "BUILTIN\Administrators", "path": "E:\Temp\Prognosis_11.2\Prerequisites\vcredist2017_x86.exe", "size": 14401656}], "matched": 5}
任务 [调试] ************************************************ ****************************************************** ****************************************************** ************************
致命:[SMN001]:失败!=> {"msg": "该任务包含一个带有未定义变量的选项。错误是:'myvar' 未定义\n\n错误似乎在'/etc/ansible/playbooks/test_find_files.yaml'中:第 18 行,第 5 列,但可能\n在文件中的其他位置,具体取决于确切的语法问题。\n\n有问题的行似乎是:\n\n\n - 名称:调试\n ^ 此处\n"}
如您所见,文件已正确找到,但即使应该分配“myvar”变量也不存在。
根据此页面,此逻辑似乎确实适用于 Linux 主机:http : //www.mydailytutorials.com/using-ansible-find-module-search-filesfolder/(参考“将文件名存储在寄存器中”在页面底部)。
会不会是 win_find 模块本身的问题?有什么想法吗?
谢谢!
这只是一个错字,你的register:缩进太远了。
它应该显示为:
- name: Find files in path
win_find:
paths: E:\Temp\Prognosis_11.2\Prerequisites
register: myvar
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
809 次 |
| 最近记录: |