-i "localhost,"
),并且在Playbook内获取从中调用ansible-playbook
命令的工作目录。但是,当我读出当前的工作目录时在剧本任务中,我获得了剧本本身的目录。
我是否可以引用任何变量来获取控制主机(本地主机)上的工作目录?
我可以通过变量
-e
进行注入,但是我宁愿回退,如果未设置该变量,我可以从[[local] host)环境中获取它。#1 楼
您可以使用env
查找插件。总是在控制主机上的“父” ansible进程的上下文中评估插件。- debug:
msg: "{{ lookup('env', 'PWD') }}"
可以在这里找到更多查找插件:http://docs.ansible .com / ansible / latest / user_guide / playbooks_lookups.html
评论
正是我想要的。可以将其与任务结合以提供文件输出的当前工作目录。目的地:“ {{lookup('env','PWD')}} / file.txt”
– GameSalutes
19年11月8日在20:03
如docs.ansible.com/ansible/latest/user_guide/…所示,这也是思想事实收集。需要确保安装程序已运行。
–费德里科
20年6月2日,下午4:06
#2 楼
我将使用shell模块运行一个简单的pwd,然后使用寄存器捕获该然后可以在任何地方重用此
评论
正如OP所说,这将返回剧本目录,而不是执行命令的目录。
–风暴
18-3-28在14:25
是的,这将返回剧本的路径,该路径也可以作为变量使用:playbook_dir。
– hakre
18 Mar 28 '18 at 14:40
评论
我能想到的唯一方法是通过-e选项传递$ PWD,您的剧本不应该从运行命令的位置知道(与shell脚本相同)目前正与shell脚本中的-e project_dir =“ $(pwd -P)”类似的东西,希望能够摆脱这种情况。
我不得不问,但是为什么您需要在您的剧本中使用该路径?
我想将Ansible用于一些本地任务,也许主要是b / c我很懒。情况是,我有大量的Git存储库,所有的存储库都代表某种项目/角色,我希望随着时间的推移对它们进行通用操作,并为此类过渡编写Ansible剧本是个主意。因此,我要管理的不是本地主机,而是远程主机,但是也许可以将Ansible SSH集成到Git服务器中,并在远程侧进行维护。但是目前这是本地的。如果我可以获得工作目录,则可以直接应用该剧本。