我如何在 Ansible 中查找 playbook_dir 下的文件?

How do i lookup a file under playbook_dir in Ansible?

我的 {{ playbook_dir }}/vars 文件夹下有一个文件 foo.txt。

我正在尝试将文件的内容分配给一个变量"filecon"

下面是我的剧本:

---

- hosts: localhost
  vars:
     filecon: "{{ lookup('file', 'hostvars[playbook_dir]/vars/foo.txt') }}"
  tasks:
     - debug: msg="the value of foo.txt is {{ contents }}"

但是,上面的剧本 运行 失败并出现以下错误:

TASK [debug]
******************************************************************************************************************************************************************  
[WARNING]: Unable to find 'hostvars[playbook_dir]/vars/foo.txt' in expected paths (use -vvvvv to see paths) 
fatal: [localhost]: FAILED! => {"msg": "An unhandled exception occurred while templating '{{ lookup('file', 'hostvars[playbook_dir]/vars/foo.txt') }}'. 
Error was a <class 'ansible.errors.AnsibleError'>, original message: An unhandled exception occurred while running the lookup plugin 'file'. 
Error was a <class 'ansible.errors.AnsibleError'>, original message: could not locate file in lookup: hostvars[playbook_dir]/vars/foo.txt"}

我尝试了以下方法,但都失败了。

  filecon: "{{ lookup('file', 'vars[playbook_dir]/vars/foo.txt') }}"

试试这个语法:

---
- hosts: localhost
  gather_facts: false
  vars:
    filecon: "{{ lookup('file', '{{ hostvars[\"localhost\"][\"playbook_dir\"] }}/vars/foo.txt') }}"

  tasks:
  - debug: 
      msg: "the value of foo.txt is: {{ filecon }}"

希望对您有所帮助。