我正在使用Ansible,我在模板路径上遇到了一些问题.这是我执行时的错误输出:
$ ansible-playbook -i hosts site.yml
PLAY [users] ******************************************************************
GATHERING FACTS ***************************************************************
ok: [10.0.3.240]
TASK: [templates] *************************************************************
fatal: [10.0.3.240] => {'msg': 'unable to read /home/robe/Desktop/ansible_demo/fig.conf.j2', 'failed': True}
fatal: [10.0.3.240] => {'msg': 'unable to read /home/robe/Desktop/ansible_demo/fig.conf.j2', 'failed': True}
FATAL: all hosts have already failed -- aborting
PLAY RECAP ********************************************************************
to retry, use: --limit @/home/robe/site.retry
10.0.3.240 : ok=1 changed=0 unreachable=1 failed=0
Run Code Online (Sandbox Code Playgroud)
这是我的项目结构:
$ tree
.
??? ansible.cfg
??? hosts
??? roles
? ??? users
? ??? files
? ??? handlers
? ? ??? main.yml
? ??? tasks
? ? ??? main.yml
? ??? templates
? ? ??? fig.conf.j2
? ??? vars
? ??? main.yml
??? site.yml
??? Vagrantfile
Run Code Online (Sandbox Code Playgroud)
这是我的site.yml代码:
---
- hosts: users
remote_user: root
sudo: True
tasks:
- name: templates
template: src="fig.conf.j2" dest="/home/vagrant/fig.conf"
Run Code Online (Sandbox Code Playgroud)
然后,为什么Ansible不会查看模板目录,它只查看根目录.
Bru*_*e P 18
当您明确使用角色"users"时,Ansible将仅查看roles/users/templates目录,您在示例中未使用该角色.要做你想做的事,你需要改变你的site.yml看起来像这样:
- hosts: users
remote_user: root
sudo: True
roles:
- { role: users }
Run Code Online (Sandbox Code Playgroud)
然后在roles/users/tasks/main.yml中你会得到:
- name: templates
template: src="fig.conf.j2" dest="/home/vagrant/fig.conf"
Run Code Online (Sandbox Code Playgroud)
site.yml中的角色告诉Ansible调用yaml文件roles/users/main.yml.引用该角色中的文件或模板的任务默认情况下会查找这些文件/模板的角色/用户/文件和角色/用户/模板.您可能希望在Ansible文档中阅读有关角色的更多信息,以确保您更好地了解它们如何组合在一起.
| 归档时间: |
|
| 查看次数: |
17015 次 |
| 最近记录: |