gpt4 book ai didi

ansible - 为什么 Ansible 不读取相对路径中的模板?

转载 作者:行者123 更新时间:2023-12-04 00:47:02 25 4
gpt4 key购买 nike

我正在使用 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

这是我的项目结构:
$ tree
.
├── ansible.cfg
├── hosts
├── roles
│   └── users
│   ├── files
│   ├── handlers
│   │   └── main.yml
│   ├── tasks
│   │   └── main.yml
│   ├── templates
│   │   └── fig.conf.j2
│   └── vars
│   └── main.yml
├── site.yml
└── Vagrantfile

这是我的 site.yml 代码:
---
- hosts: users
remote_user: root
sudo: True
tasks:
- name: templates
template: src="fig.conf.j2" dest="/home/vagrant/fig.conf"

那么,为什么 Ansible 不查看模板目录而只查看根目录。

最佳答案

当您明确使用角色“用户”时,Ansible 只会在角色/用户/模板目录中查找,而您在示例中并未使用该角色。要执行您想要的操作,您需要将您的 site.yml 更改为如下所示:

- hosts: users
remote_user: root
sudo: True
roles:
- { role: users }

然后在角色/用户/任务/main.yml 中,您将拥有:
- name: templates
template: src="fig.conf.j2" dest="/home/vagrant/fig.conf"

site.yml 中的角色告诉 Ansible 调用 yaml 文件角色/用户/任务/main.yml。默认情况下,引用该角色内的文件或模板的任务将在角色/用户/文件和角色/用户/模板中查找这些文件/模板。您可能想在 Ansible documentation 中阅读有关角色的更多信息。以确保您更好地了解它们是如何组合在一起的。

关于ansible - 为什么 Ansible 不读取相对路径中的模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24559125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com