我有一个应用程序,该应用程序创建一个实际名为%UserProfile%
的目录。我无法弄清楚如何使Ansible理解并使用该名称。
除其他外,我想创建目录D:\Downloads\CloneApp\cloneapptorun\Backup\Windows Documents\%UserProfile%
。
我找不到告诉ansible进行有效工作的方法。我尝试了很多组合。下面的代码是我使用的基本结构:
- name: Create local staging cloneapp package directory
win_file:
path: "{{ remote_cloneapp_package_folder }}"
state: directory
- name: Create local staging cloneapp package userprofile documents documents directory
win_file:
path: /unsafe "{{ remote_cloneapp_package_folder }}\\Backup\Windows Documents\\{%raw%}%UserProfile%{%endraw%}"
state: directory
Giving:
fatal: [192.168.2.96]: FAILED! => {"changed": false, "msg": "Get-AnsibleParam: Parameter 'path' has an invalid path '/unsafe \"c:\\Downloads\\CloneApp\\cloneapptorun\\\\Backup\\Windows Documents\\\\C:\\Users\\mbengtss\"' specified."}
我在最后一个路径部分尝试了许多组合。喜欢:
路径:“ {{remote_cloneapp_package_folder}} \ Backup \ Windows文档\ {%raw%}。%UserProfile。%{%endraw%}”
直接从ansible提供错误的语法,无法运行
路径:“ {{remote_cloneapp_package_folder}} \ Backup \ Windows文档{{%raw%}}%UserProfile%{{%endraw%}}'
给予:致命:[192.168.2.96]:失败! => {“ msg”:“模板字符串时发生模板错误:意外的'%'。字符串:{{remote_cloneapp_package_folder}} \ Backup \ Windows Documents \ {{%raw%}}%UserProfile%{{%endraw%}}” }
路径:{{remote_cloneapp_package_folder}} \ Backup \ Windows文档{{%}} UserProfile {{%}}
给予:致命:[192.168.2.96]:失败! => {“ msg”:“模板字符串时发生模板错误:意外的'%'。字符串:{{remote_cloneapp_package_folder}} \ Backup \ Windows Documents \ {{%}} UserProfile {{%}}”}
< / li>路径:'{{remote_cloneapp_package_folder}} \ Backup \ Windows Documents \%UserProfile%'
给予:致命:[192.168.2.96]:失败! => {“已更改”:false,“ msg”:“不支持给定路径的格式。”}
路径:'“ {{remote_cloneapp_package_folder}} \ Backup \ Windows Documents \%UserProfile%”'
给予:致命:[192.168.2.96]:失败! => {“已更改”:false,“ msg”:“不支持给定路径的格式。”}
路径:“ {{remote_cloneapp_package_folder}} \ Backup \ Windows Documents \\%UserProfile \%”
给出:直接从ansible发出错误的语法,无法运行
尽管第一个目录部分是根据需要创建的,但尝试都不会导致Ansible创建需要的目录。
如何定义最后一个路径字符串,使其起作用?我确实希望目录保持原样。因此,问题不在于更改目录名称,而是与Ansible一起理解和创建当前被命名的目录名称。
---垫子---
答案 0 :(得分:0)
为什么,那是残酷的,但是我学到了很多关于ansible的问题,因为它为您的问题设置了测试环境。
答案似乎是利用%
环境扩展行为来注入一个本身不受环境扩展约束的值:
- win_file:
path: 'c:\temp\%sneaky%'
state: directory
environment:
# any name will do, so long as it is not an existing env-var
sneaky: '%UserProfile%'
但是,根据您引用该奇怪目录的其他位置的多少,您可能会有很多很多更好的命名方式,然后将其重命名为“最后一刻需要的”名称(从win_command文档中汲取灵感,这些文档允许使用args: stdin:
来避免引用地狱):
- win_command: powershell.exe -
args:
stdin: 'mv c:\temp\something c:\temp\%UserProfile%'
是的,我知道也可以使用win_command
在第一个代码段中创建目录,但是我对发现是否有任何方法可以执行您最初要求的内容更感兴趣