Ansible 角色 YAML 错误

Ansible roles YAML error

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

您不能在 roles/test/tasks/main.yml 中指定主机。主机在 play.yml 文件中指定。

roles/test/tasks/main.yml 用于定义你希望 Ansible 执行的动作。在您 ping 主机的情况下,它可能看起来像:

 ---

 - ping:

这将在您的 play.yml

中指定的主机上执行 ping 操作

Ansible 有一套文件夹结构,可用于分解剧本。 play.yml 文件指定要定位的主机以及要应用的角色以及其他顶级控件。

play.yml 文件中指定的各个角色位于 roles/X/ 中,存在 Ansible 期望的特定文件夹结构。它将在此处 roles/test/tasks/main.yml.

test 角色中寻找 运行 的任务

play.yml 只是一本剧本。您可以在同一文件夹中创建多个并使用 ansible-playbook 调用它们。

官方文档有比较详细的例子推荐playbook directory structure