似乎Ansible有很多惯例,即在哪里寻找host_vars
以及某些其他事情。我想知道是否有更简单的方法来运行ansible任务。
目前我这样做。
ansible-playbook ./roles/neo4j/tasks/create.yml
但我想知道是否有更简洁的方法来做到这一点。 即。
ansible-playbook neo4j/create
这看似简单,但我觉得我目前使用的方法过于冗长,必须有更好的方法。
我的目录结构如下
答案 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