我正在研究一个控制我们的测试环境的部署和维护的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使用的推荐标签命名约定?
答案 0 :(得分:1)
一般情况下,我通过这样的tasks/main.yml
用角色本身的名称来标记我的角色:
- include: <rolename>.yml
tags: <rolename>
然后我的所有角色共享一个公共标记bootstrap
,它应用于处理一次性操作的任务,例如创建目录结构,安装特定版本的rpm / yum / apt包等等。因此,当第二次运行时,所有具有相同结果并且永远不会产生变化的事物。应用程序配置不属于此,因为这可能会发生变化。通常会跳过此bootstrap
标记以加快播放速度,并且仅在首次播放新主机时触发。这可能就是你install.yml
中的内容。
对于启动,停止和重新启动服务,我需要<role>_<start/stop/restart>
标记。但实际上很少使用这种方法,因为大多数服务只在重新配置时才重新启动,并且使用处理程序完成。