测试一个基本的Ansible角色设置,但在角色main.yml
的第一行遇到错误,我确信这是愚蠢的事情
play.yml
- hosts: myhosts
remote_user: myuser
roles:
- test
目录结构
play.yml
roles/test/tasks/main.yml
main.yml
- hosts: all
user: myuser
gather_facts: no
tasks:
- name: ping all hosts
ping:
当我运行ansible-playbook play.yml
时,我收到错误
The offending line appears to be:
- hosts: all
^ here
它看起来像一个简单的YAML解析错误,但如果我运行ansible-playbook main.yml
,它运行正常,所以不确定发生了什么。有什么想法吗?
答案 0 :(得分:2)
您无法在roles/test/tasks/main.yml
中指定主机。主机在play.yml
文件中指定。
roles/test/tasks/main.yml
用于定义您希望Ansible执行的操作。在你的情况下ping主机,它可能看起来像:
---
- ping:
这将对ping
play.yml
操作
Ansible有一个可用于分解playbooks的set文件夹结构。 play.yml
文件,指定要定位的主机以及要与其他顶级控件一起应用的角色。
play.yml
文件中指定的各个角色位于roles/X/
,Ansible需要一定的文件夹结构。它将查找要在test
角色roles/test/tasks/main.yml
中运行的任务。
play.yml
只是一本剧本。您可以在同一文件夹中创建多个文件,并使用ansible-playbook
进行调用。
官方文档中有一个更详细的推荐playbook directory structure
示例