无法创建%UserProfile%目录

时间:2018-09-23 07:43:22

标签: ansible ansible-2.x

我有一个应用程序,该应用程序创建一个实际名为%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."}

我在最后一个路径部分尝试了许多组合。喜欢:

  1. 路径:“ {{remote_cloneapp_package_folder}} \ Backup \ Windows文档\ {%raw%}。%UserProfile。%{%endraw%}”

    直接从ansible提供错误的语法,无法运行

  2. 路径:“ {{remote_cloneapp_package_folder}} \ Backup \ Windows文档{{%raw%}}%UserProfile%{{%endraw%}}'

    给予:致命:[192.168.2.96]:失败! => {“ msg”:“模板字符串时发生模板错误:意外的'%'。字符串:{{remote_cloneapp_package_folder}} \ Backup \ Windows Documents \ {{%raw%}}%UserProfile%{{%endraw%}}” }

  3. 路径:{{remote_cloneapp_package_folder}} \ Backup \ Windows文档{{%}} UserProfile {{%}}

    给予:致命:[192.168.2.96]:失败! => {“ msg”:“模板字符串时发生模板错误:意外的'%'。字符串:{{remote_cloneapp_package_folder}} \ Backup \ Windows Documents \ {{%}} UserProfile {{%}}”}

    < / li>
  4. 路径:'{{remote_cloneapp_package_folder}} \ Backup \ Windows Documents \%UserProfile%'

    给予:致命:[192.168.2.96]:失败! => {“已更改”:false,“ msg”:“不支持给定路径的格式。”}

  5. 路径:'“ {{remote_cloneapp_package_folder}} \ Backup \ Windows Documents \%UserProfile%”'

    给予:致命:[192.168.2.96]:失败! => {“已更改”:false,“ msg”:“不支持给定路径的格式。”}

  6. 路径:“ {{remote_cloneapp_package_folder}} \ Backup \ Windows Documents \\%UserProfile \%”

    给出:直接从ansible发出错误的语法,无法运行

尽管第一个目录部分是根据需要创建的,但尝试都不会导致Ansible创建需要的目录。

如何定义最后一个路径字符串,使其起作用?我确实希望目录保持原样。因此,问题不在于更改目录名称,而是与Ansible一起理解和创建当前被命名的目录名称。

---垫子---

1 个答案:

答案 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在第一个代码段中创建目录,但是我对发现是否有任何方法可以执行您最初要求的内容更感兴趣

相关问题