Ansible角色YAML错误
测试一个基本的Ansible角色设置,但是在角色Ansible角色YAML错误,ansible,ansible-role,Ansible,Ansible Role,测试一个基本的Ansible角色设置,但是在角色main.yml的第一行出现了一个错误,我相信这是很愚蠢的 play.yml - hosts: myhosts remote_user: myuser roles: - test - hosts: all user: myuser gather_facts: no tasks: - name: ping all hosts ping: 目录结构 play.yml roles/test/tasks/main
main.yml
的第一行出现了一个错误,我相信这是很愚蠢的
play.yml
- hosts: myhosts
remote_user: myuser
roles:
- test
- hosts: all
user: myuser
gather_facts: no
tasks:
- name: ping all hosts
ping:
目录结构
play.yml
roles/test/tasks/main.yml
main.yml
- hosts: myhosts
remote_user: myuser
roles:
- test
- 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
,它工作正常,所以不确定发生了什么。有什么想法吗?您不能在角色/test/tasks/main.yml
中指定主机。主机在play.yml
文件中指定
roles/test/tasks/main.yml
用于定义希望Ansible执行的操作。在ping主机的情况下,它可能只是如下所示:
---
- ping:
这将对您的play.yml
中指定的主机执行ping
操作
- hosts: myhosts
remote_user: myuser
roles:
- test
- hosts: all
user: myuser
gather_facts: no
tasks:
- name: ping all hosts
ping:
Ansible有一套文件夹结构,可以用来分解剧本。play.yml
文件指定了目标主机以及与其他顶级控件一起应用的角色
play.yml
文件中指定的单个角色位于roles/X/
中,Ansible需要特定的文件夹结构。它将在这里的roles/test/tasks/main.yml
角色中查找要运行的任务
play.yml
只是一个剧本。您可以在同一文件夹中创建多个,并使用ansible playbook
调用它们
官方文档中有一个更详细的推荐示例(在线)YAML验证器将向您显示,这与YAML解析错误无关,而是一个可能的相关问题。是的,我已经知道这不是YAML问题,因为
ansible playbook main.yml
工作正常,我说这看起来像是一个简单的YAML解析错误,表明问题在别处。谢谢,这是可行的,但我应该注意,我不能,而不是不需要,在main.yml
中指定主机。我认为Ansible正在做一些基本的事情,比如按照YAML规范连接两个文件并缩进main.yml
中的内容。顺便问一下,--
是做什么的?“我对Ansible不熟悉。”鲍勃,你说得对。我已经更新了答案,使之更清晰,并添加了一个到官方文档的链接,其中有一个文件夹布局的好例子。---只是yaml语法的一部分,它表示文档的开始。使用它是一种很好的做法,尽管并不总是严格要求。我还建议您看看哪些角色有很多示例可供尝试。