Playbook vs Role vs [databases]和/etc/ansible/hosts中的类似条目
[databases]是一组主机的单个名称。它允许您通过一个名称引用多个主机。
Role是一组任务和附加文件,用于配置主机以提供特定的角色。
Playbook是主机和角色之间的映射。
documentation中的示例描述了示例项目。它包含两个内容:
- Playbooks. site.yml、webservers.yml、fooservers.yml是playbooks。
- Roles:roles/common/和roles/webservers/分别包含common和webservers角色的定义。
在playbook(webservers.yml)中,您会看到类似以下内容:
---
- hosts: webservers <- this group of hosts defined in /etc/ansible/hosts, databases and mail_servers in example from your question
roles: <- this is list of roles to assign to these hosts
- common
- webservers
如果Playbooks在YAML文件中定义,那么角色在哪里定义呢?
它们在"roles/*"目录中定义。角色主要使用YAML文件进行定义,但也可以包含任何类型的资源(如"files/"、"templates/")。根据文档
documentation,角色定义的结构如下:
如果存在roles/x/tasks/main.yml文件,则其中列出的任务将被添加到play中。
如果存在roles/x/handlers/main.yml文件,则其中列出的处理程序将被添加到play中。
如果存在roles/x/vars/main.yml文件,则其中列出的变量将被添加到play中。
如果存在roles/x/meta/main.yml文件,则其中列出的任何角色依赖项将被添加到角色列表中(1.3及更高版本)。
任何复制任务可以引用roles/x/files/中的文件,而无需相对或绝对路径。
任何脚本任务可以引用roles/x/files/中的脚本,而无需相对或绝对路径。
任何模板任务可以引用roles/x/templates/中的文件,而无需相对或绝对路径。
任何包含任务可以引用roles/x/tasks/中的文件,而无需相对或绝对路径。
最重要的文件是roles/x/tasks/main.yml,在这里定义了在执行角色时将执行的任务。
除了Ansible服务器上的ansible.cfg之外,我如何添加/配置可用的Playbooks/Roles到Ansible?例如,当我运行ansible-playbook someplaybook.yaml时,Ansible如何知道在哪里找到该playbook?
$ ansible-playbook someplaybook.yaml
在当前目录中寻找一个playbook。
$ ansible-playbook somedir/somedir/someplaybook.yaml
在目录下寻找一个playbook。
将您的项目及其所有的playbooks和角色放在服务器上是您的责任,Ansible与此无关。
tasks
是执行任务的操作。playbooks
组织并启动tasks
。roles
组织一组任务、处理器等以执行特定功能。需要使用某个playbook
来启动role
(s)。如果要管理站点上所有主机的配置,您会如何称呼roles
和playbooks
的集合? - fbicknel