ansible - 防止使用 Ansible 同时部署

标签 ansible

我团队中的任何人都可以通过 SSH 连接到我们的特殊部署服务器,并从那里运行 Ansible playbook 将新代码推送到机器。

我们担心如果两个人尝试同时进行部署会发生什么。我们希望做到这一点,以便如果其他人当前正在运行该剧本,该剧本就会失败。

对于如何做到这一点有什么建议吗?标准解决方案是使用 pid 文件,但 Ansible 没有对这些文件的内置支持。

最佳答案

我个人使用 RunDeck ( http://rundeck.org/ ) 作为我的 Ansible playbook 的包装器,原因有多种:

  • 您可以将 RunDeck“作业”设置为只能运行一次(或将其设置为根据需要同时运行任意多次)
  • 您可以在系统内设置用户,以便清楚地审核谁运行了哪些内容
  • 您可以设置其他变量,并对可用内容进行限制(指定选项列表)
  • 它比 Ansible Tower 便宜很多(RunDeck 是免费的)
  • 它具有完整的 API,可用于从构建系统实用地运行作业
  • 您不需要围绕 ansible-playbook 命令编写复杂的 bash 包装器
  • SSH 可以成为“某些东西需要编写 ansible 脚本”的试金石 - 我不允许 SSH 访问,除非完全中断/修复情况,因此我们拥有更满意的 SA
  • 最后,绝对是“最好有”类别中的一个,您可以安排 RunDeck 作业以一种非常简单的方式运行 ansible playbook,以便任何登录到控制台的人查看正在运行的内容

当然还有很多更好的理由,但我的手指已经厌倦了打字;)

关于ansible - 防止使用 Ansible 同时部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21869912/

相关文章:

linux - 如果不满足某些条件,如何跳过 ansible 剧本中的所有其他剧本?

python - 开发的 Ansible 模块可以包含或扩展 Ansible Core 模块吗?

mongodb - Ansible - 在 wait_for 时重复任务

ansible - 通过 Ansible 查找包含程序的所有 CICS 区域

server - 如何在ansible中的 "Do you want to continue"提示符上提供自定义输入?

ansible - 使用字典迭代字典列表

ansible - 在 playbook 中运行任务之前,如何设置确认提示?

linux - 使用 Ansible 中的字符串查询搜索 Linux 进程 (PID)

json - JSON 文件中的 Ansible 变量替换问题

linux - 通过 ansible 获取 yum 更新列表失败