我如何在 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 }}"
希望对您有所帮助。
我的 {{ 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 }}"
希望对您有所帮助。