Ansible 获取本地主机上文件的绝对路径

Ansible 获取本地主机上文件的绝对路径,ansible,Ansible,允许用户对目标主机执行一组测试,留下最小的影响,删除测试的所有痕迹 令人惊讶的是,很难确定运行playbook的主机上的绝对路径。解析copy的文件似乎非常复杂,Ansible有一个尝试解析文件的优先级列表 作为测试失败时发出的调试信息的一部分,我希望指定本地主机上文件的绝对路径和远程主机上文件的绝对路径。远程主机很容易查询,但我似乎找不到一种方法来确定源文件来自本地主机 我的任务是: - copy: src={{ goss_file }} dest=/tmp/goss/ mode=0644

允许用户对目标主机执行一组测试,留下最小的影响,删除测试的所有痕迹

令人惊讶的是,很难确定运行playbook的主机上的绝对路径。解析
copy
的文件似乎非常复杂,Ansible有一个尝试解析文件的优先级列表

作为测试失败时发出的调试信息的一部分,我希望指定本地主机上文件的绝对路径和远程主机上文件的绝对路径。远程主机很容易查询,但我似乎找不到一种方法来确定源文件来自本地主机

我的任务是:

- copy: src={{ goss_file }} dest=/tmp/goss/ mode=0644
goss_文件
由用户指定为角色变量。我想做的是确定运行Ansible对远程主机的本地计算机上的
goss_文件
的完整绝对路径


有办法做到这一点吗?这将大大有助于我一直在进行的调试。

下面是我用来在我们的goss测试解决方案中查找模板文件(在本例中)的一个片段

    - name: save goss files list
  set_fact:
    goss_files : "{{ lookup('fileglob', '../roles/{{role_name}}/templates/*.j2', wantlist=True) | sort }}"
- name: print
  debug:
    msg: 
      - "{{ goss_files }}"

- name: Copy goss test from template to remote
  template:
    src: "{{ item }}"
    dest: /tmp/{{ item | basename | regex_replace('\.j2','.yml') }}
    mode: '0644'
  with_items:
    - "{{ goss_files }}"
我还必须在ansible的“根目录”中创建一个空文件文件夹。
您可以在这里看到完整的解决方案

用户是否从playbook目录运行playbook,这样就可以根据
{{playbook\u dir}}
解析任何相对路径?如果用户输入类似
。/../../../../../myfiletocopy
,是否要输出绝对路径?您可以在
localhost
上运行
readlink
命令并使用调试模块输出