1

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

4

1 回答 1

2

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

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

 ---

 - ping:

这将ping在您指定的主机上执行操作play.yml

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

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

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

官方文档有更详细的推荐playbook目录结构示例

于 2016-11-15T01:14:55.283 回答