Ansible角色YAML错误

时间:2016-11-15 00:46:01

标签: ansible ansible-role

测试一个基本的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,它运行正常,所以不确定发生了什么。有什么想法吗?

1 个答案:

答案 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

示例