ansible - 跨角色的一致标记

时间:2016-03-03 18:10:42

标签: ansible ansible-playbook

我正在研究一个控制我们的测试环境的部署和维护的ansible playbook。我们有一个数据库,java glassfish和activemq进程以及一个nginx进程。我们有一个带角色的标准目录结构,然后在每个角色中共同安装,启动,停止任务。

site.yml
roles
    database
        tasks
            main.yml
            install.yml
            start.yml
            stop.yml
    glassfish
        tasks
            main.yml
            install.yml
            start.yml
            stop.yml
    nginx
        tasks
            main.yml
            install.yml
            start.yml
            stop.yml

目前我们还有一些额外的根级别剧本

site.yml
database.yml
glassfish.yml
nginx.yml
start.yml
stop.yml
install.yml
roles

我们直接打电话。我想摆脱这些并拥有一个site.yml,但我正在寻找关于如何标记这些各种任务的建议。是否存在stackoverflowers使用的推荐标签命名约定?

1 个答案:

答案 0 :(得分:1)

一般情况下,我通过这样的tasks/main.yml用角色本身的名称来标记我的角色:

- include: <rolename>.yml
  tags: <rolename>

然后我的所有角色共享一个公共标记bootstrap,它应用于处理一次性操作的任务,例如创建目录结构,安装特定版本的rpm / yum / apt包等等。因此,当第二次运行时,所有具有相同结果并且永远不会产生变化的事物。应用程序配置不属于此,因为这可能会发生变化。通常会跳过此bootstrap标记以加快播放速度,并且仅在首次播放新主机时触发。这可能就是你install.yml中的内容。

对于启动,停止和重新启动服务,我需要<role>_<start/stop/restart>标记。但实际上很少使用这种方法,因为大多数服务只在重新配置时才重新启动,并且使用处理程序完成。