ansible 是否有在哪里寻找角色的约定?

Does ansible have a convention for where to look for roles?

看来 Ansible 有很多约定,即在哪里寻找 host_vars 和某些其他东西。我想知道是否有更简单的方法来 运行 一个可靠的任务。

目前我正在这样做。 ansible-playbook ./roles/neo4j/tasks/create.yml

但我想知道是否有更简洁的方法来做到这一点。 即

ansible-playbook neo4j/create

这看起来很简单,但我觉得我目前使用的方法太冗长了,必须有更好的方法。

我的目录结构是这样的

正如@tedder42 在评论中提到的那样,您应该使用剧本而不是使用角色调用 ansible-剧本。我什至不知道这是可能的。也许您的角色也有问题,而是将剧本的内容放在角色任务文件中。因为我希望 Ansible 不知道在哪些主机上 运行 这个角色。

Ansible 将寻找与您的剧本相关的角色。因此,如果您的 playbook 将保存在与您的库存文件相同的级别并且具有这样的内容,它就可以工作:

---

- name: Do something
  hosts: all
  roles:
     - neo4j
...

您唯一需要更改的是任务文件的名称。 (create.yml) Ansible 期望主 yaml 文件的名称为 main.yml

另见 http://docs.ansible.com/ansible/playbooks_roles.html#roles