2016-04-14 60 views
0

我有4个剧本。其中2个正在我的目标机器上部署服务,其中2个正在重新删除它们。 现在我想把他们放在角色中。但我不确定最佳做法是什么。
2部署剧本只用不同的变量和模板做同样的事情。这同样适用于删除剧本。Ansible:角色的任务结构

大气压我的结构是这样的:

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任务文件中。

+0

您是否在不同组或单个组上运行角色(部署或删除)? – shaps

+0

每个服务都有一个组来指定应该在哪些机器上部署它们。 – Forivin

回答

2

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

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

+0

所以你会建议使用一个角色而不是多个角色,即使这些服务与对方完全没有关系? – Forivin

+0

我的意思是这是一个选项。对我来说,对于不同的服务有不同的角色(即使你做同样的事情)是非常有意义的,因为我认为角色是一个独立的实体(如果你想要一个服务)。如果你对这个事实感到困扰,你将不得不维护两个角色,那么没有什么能阻止你使用一个更通用的角色来处理这两个服务 – shaps

+0

嗯,我只是想,可能有一些方法来定义一个更多的任务在全球范围内(如编程中的库),以便多个角色可以使用它。我不确定这是否符合“最佳实践”。 – Forivin