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

时间:2018-11-26 21:37:50

标签: ansible

One of my Ansible roles允许用户对目标主机执行一组测试,从而将影响降至最低,消除了测试的所有痕迹。

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

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

这是我的任务:

- copy: src={{ goss_file }} dest=/tmp/goss/ mode=0644

goss_file由用户指定为角色变量。我想做的是确定针对远程主机运行Ansible的本地计算机上goss_file的完整绝对路径。

有没有办法做到这一点? 可以帮助我进行调试。

1 个答案:

答案 0 :(得分:0)

这是我用来在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的“根目录”中创建一个空文件文件夹。 您可以在Using goss and Ansible templates for System Testing

上查看完整的解决方案