Ansible:角色的任务结构

Ansible:角色的任务结构,ansible,ansible-playbook,ansible-role,Ansible,Ansible Playbook,Ansible Role,我有4本剧本。其中两个正在我的目标计算机上部署服务,其中两个正在再次删除它们。 现在我想让他们扮演角色。但我不确定最佳做法是什么。 2个部署剧本只使用不同的变量和模板做完全相同的事情。这同样适用于删除剧本 Atm我的结构如下所示: ansible.cfg ssh_key inventoryfile group_vars .... roles deployservicegroupA vars ... templates

我有4本剧本。其中两个正在我的目标计算机上部署服务,其中两个正在再次删除它们。 现在我想让他们扮演角色。但我不确定最佳做法是什么。
2个部署剧本只使用不同的变量和模板做完全相同的事情。这同样适用于删除剧本

Atm我的结构如下所示:

ansible.cfg
ssh_key
inventoryfile
group_vars
    ....
roles
    deployservicegroupA
       vars
           ...
       templates
           ...
       tasks
           main.yml (this file simply includes the two tasks right below)
           copy-service-templates.yml
           start-services.yml
    deployservicegroupB
       vars
           ...
       templates
           ...
       tasks
           main.yml (this file simply includes the two tasks right below)
           copy-service-templates.yml
           start-services.yml
    removeservicegroupA
       vars
           ...
       templates
           ...
       tasks
           main.yml (this file simply includes the two tasks right below)
           remove-services.yml
           cleanup.yml
    removeservicegroupB
       vars
           ...
       templates
           ...
       tasks
           main.yml (this file simply includes the two tasks right below)
           remove-services.yml
           cleanup.yml
这是用户打算采用的方式吗?

我特别想知道我的任务是做完全相同的事情,但可以在不同的角色中找到。另外,如果我应该在main.yml任务文件中包含我的任务。

根据您的评论,您正在为每个服务使用一个组,您可以使用组变量指定要使用的变量


然后,您可以将角色合并在一起,唯一需要做的就是根据正在运行播放的组加载特定模板。

根据您的评论,您正在为每个服务使用组,您可以使用组变量指定要使用的变量


然后,您可以将角色合并在一起,唯一需要做的就是根据正在运行播放的组加载特定的模板。

您是在不同的组上运行角色,还是在单个组上运行角色(部署或删除)?每个服务都有一个组,用于指定它们应该部署在哪些机器上。您是在不同的组上运行角色,还是在单个组上运行角色(部署或删除)?每个服务都有一个组,用于指定它们应该部署在哪些机器上。因此,您建议使用一个角色,而不是多个角色,即使这些服务彼此完全无关?我在这里的意思是,这是一个选项。对我来说,为不同的服务设置不同的角色(即使你做同样的事情)是非常有意义的,因为我认为角色是一个独立的实体(如果你愿意的话,是一个服务)。如果您担心您必须维护2个角色,那么没有什么可以阻止您使用一个更通用的角色来处理这两个服务。我只是认为可能有某种方法可以更全局地定义任务(如编程中的库),以便多个角色可以使用它。我只是不确定这是否符合“最佳实践”。我真的不认为它符合最佳实践,因为角色应该是一个定义良好的实体,可以共享和重用,所以它实际上是一个库,但是有一个非常具体的例子:)所以你会建议使用一个角色而不是多个角色,即使这些服务之间完全没有关系?我在这里的意思是这是一个选项。对我来说,为不同的服务设置不同的角色(即使你做同样的事情)是非常有意义的,因为我认为角色是一个独立的实体(如果你愿意的话,是一个服务)。如果您担心您必须维护2个角色,那么没有什么可以阻止您使用一个更通用的角色来处理这两个服务。我只是认为可能有某种方法可以更全局地定义任务(如编程中的库),以便多个角色可以使用它。我只是不确定这是否符合“最佳实践”。我真的不认为它符合最佳实践,因为角色应该是一个定义良好的实体,可以共享和重用,因此它实际上是一个库,但非常具体:)