【发布时间】:2016-09-26 17:45:29
【问题描述】:
我是配置管理和部署工具的新手。我必须为我参与过的最有趣的项目之一实施持续交付/持续部署工具。
首先,就个人而言,我对AWS 很满意,我知道Ansible 是什么,它背后的逻辑及其用途。我对Docker 的理解程度不同,但我明白了。我浏览了很多互联网资源,但我无法了解大局。
我一直在努力的是它们如何结合在一起。使用Ansible,我可以将我的基础架构作为代码进行管理;构建EC2 实例、安装包...我什至可以通过拉取其代码、修改配置文件和启动 Web 服务器来部署完整的应用程序。 Docker 本身就是一个打包应用程序并确保它可以在您部署的任何地方运行的工具。
我的问题是:
Docker(或 Ansible 和 Docker)如何扩展持续集成流程!?
假设我们有一个源代码存储库,团队成员完成了一项功能的工作并推送他们的工作。 Jenkins 检测到这一点,运行所有验收/单元/集成测试套件,如果它们都通过了,它会声明它是一个稳定的构建。 Docker 如何适合这里?我的意思是当团队推动他们的工作时,Jenkins 是否必须提取应用程序中编码的 Docker 文件源、构建应用程序的映像、启动容器并针对它运行所有测试,或者它以经典方式运行测试,如果一切都很好,然后它从 Docker 文件构建 Docker 映像并将其保存在私有位置? 例如,Jenkins 是否应该使用 x.y.z 标记最终图像!?
Docker 容器配置:
假设我们有一个由Jenkins 构建的图像存储在某个地方,如何处理将相同的图像部署到不同的环境,甚至不同的配置参数(Vhosts 配置、DB 主机、队列 URL、S3 端点等... ) 在不违反Docker 原则的情况下处理此问题的最灵活方法是什么?这些配置在构建时或基于它的容器启动时是否支持在镜像中,如果是,它们是如何注入的?
Ansible 和 Docker:
Ansible 提供了一个Docker 模块来管理Docker 容器。假设我解决了上面提到的问题,当我想部署我的应用程序的新版本 xtz 时,我告诉 Ansible 从它存储的位置拉取该图像,启动应用程序容器,那么如何注入配置设置! ? Ansible 是否必须在运行之前登录 Docker 映像(这对我来说听起来很疯狂)并以与经典主机相同的方式使用其 Jinja2 模板!?如果没有,这怎么处理?!
如果这是一个很长的问题或者我拼错了什么,请原谅,但这是我的想法。过去两周我被阻止了,我无法弄清楚正确的工作流程。我希望这可以作为未来读者的参考。
请阅读您的经验和解决方案非常有帮助,因为这看起来像是一个常见的工作流程。
【问题讨论】:
-
Ansible + Docker == 魔法!这是一篇很棒的博文:developer.rackspace.com/blog/ansible-and-docker,ansiblefordevops.com 中还有一个专门介绍 Ansible + Docker 的部分
标签: amazon-web-services docker ansible continuous-deployment continuous-delivery