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

时间:2015-12-26 04:45:32

标签: ansible ansible-playbook

似乎Ansible有很多惯例,即在哪里寻找host_vars以及某些其他事情。我想知道是否有更简单的方法来运行ansible任务。

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

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

ansible-playbook neo4j/create

这看似简单,但我觉得我目前使用的方法过于冗长,必须有更好的方法。

我的目录结构如下directory-structure

1 个答案:

答案 0 :(得分:1)

正如评论中提到的@ tedder42,您应该使用剧本而不是使用角色调用ansible- playbook 。我甚至都不知道这是可能的。也许你在角色中也出了问题,而是在角色任务文件中包含了剧本的内容。因为我希望Ansible不知道在哪个主机上运行该角色。

Ansible将寻找相对于你的剧本的角色。因此,如果您的剧本与库存文件保存在同一级别并且具有这样的内容,那么它将起作用:

---

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

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

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