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
看来 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