亚马逊网络服务 – Docker和Ansible如何配合实施Continuos Delivery/Continuous Deployment

我是配置管理和部署工具的新手。我必须实施一个持续交付/持续部署工具,是我曾经把手的最有趣的项目之一。

首先,单独地,我对AWS很满意,我知道Ansible是什么,它背后的逻辑及其目的。我对Docker的理解水平不一样,但我得到了这个想法。我经历了很多互联网资源,但是我无法得到这个大图。

我一直在努力的是他们如何配合在一起。使用Ansible,我可以管理我的基础设施作为代码;构建EC2实例,安装包…我甚至可以通过拉其代码,修改配置文件和启动Web服务器部署完整的应用程序。 Docker本身就是一个打包应用程序的工具,并确保它可以在您部署它的任何地方运行。

我的问题是:

Docker(或Ansible和Docker)如何扩展持续集成过程!

假设我们有一个源代码存储库,团队成员完成一个功能,并推动他们的工作。 Jenkins检测到这一点,运行所有验收/单元/集成测试套件,如果它们都通过,它将其声明为稳定版本。 Docker如何适应?我的意思是当团队推动他们的工作时,jenkins是否必须将Docker文件的源代码编码在应用程序中,构建应用程序的映像,启动容器并运行所有的测试,或者运行测试的经典方式,如果一切都是好的,那么它从Docker文件构建Docker映像并将其保存在私人的地方?
Jenkins应该使用x.y.z来标记最终图像!

Docker容器配置:

假设我们有一个由Jenkins建立的映像存储在某个地方,如何处理在不同环境中部署相同的映像,甚至不同的配置参数(Vhosts config,DB主机,Queues URL,S3端点等)最多灵活的方式来处理这个问题,而不是打破Docker的原则?这些配置是在映像生成时还是在基于它的容器启动时支持的,如果它们是如何注入的呢?

可以和Docker:

Ansys提供了一个Docker模块来管理Docker容器。假设我解决了上面提到的问题,当我想要部署我的应用程序的新版本x.t.z时,我告诉Ansible从存储的位置提取图像,启动应用程序容器,所以如何注入配置设置! Ansys可以在Docker镜像运行之前登录Docker镜像(这对我来说听起来很疯狂),并且使用它的Jinja2模板与经典主机相同。如果没有,怎么处理?

对不起,如果这是一个很长的问题,或者我拼错了一些东西,请问这是我的想法。过去两周我被封锁,我无法弄清正确的工作流程。我希望这可以作为未来读者的参考。

请阅读您的经验和解决方案非常有帮助,因为这看起来像一个常见的工作流程。
先谢谢你。任何帮助深表感谢。

我想回答部分内容

How does Docker (or Ansible and Docker) extend the Continuous Integration process!?

由于docker图像在任何地方都一样,您可以使用Docker图像,就像它们是生产图像一样。因此,当某人提交了一个代码时,您将构建您的码头图像。你对它进行测试。当所有测试通过时,您会相应地标记该图像。由于码头快速,这是一个可行的工作流程。
码头变化也是增量;因此,您的图像对存储的影响最小。此外,当您的测试失败时,您也可以选择保存该图像。以这种方式,开发人员将拉扯该图像并轻松调查为什么您的测试失败。开发人员可能会选择在他们的机器上运行测试,因为码头图像在jenkins和他们的机器是没有不同的。

所有开发人员都将拥有相同的环境,所有软件的版本都相同,因为您决定在Docker图像中使用哪一种软件。我遇到了由于开发者机器之间的差异导致的错误。例如在同一操作系统中,unicode设置可能会影响您的代码。但是在Docker图像中,所有的开发人员都将测试相同的设置,相同的版本软件。

Docker containers configuration :

如果您使用的是私有存储库,并且应该使用一个,那么配置更改不会影响硬盘空间。因此,除了安全配置(例如db密码),您可以对Docker映像(Baking the Configuration into the Container)应用配置更改。然后,您可以使用ansible在启动之前/之后使用环境变量或Docker Volumes将未存储的配置应用到已部署的映像。

https://dantehranian.wordpress.com/2015/03/25/how-should-i-get-application-configuration-into-my-docker-containers/

Does Ansible have to log in the Docker image, before it’s running (
this sounds insane to me ) and use its Jinja2 templates the same way
with a classic host!? If not, how is this handled?!

不,ansible不会登录Docker的图像,但是可以使用Jinja2模板来修改docker文件。您可以使用模板更改dockerfile,并可以将配置注入到不同的文件中。相应地标记您的文件,并且您已配置图像以旋转。

http://stackoverflow.com/questions/37499514/how-docker-and-ansible-fit-together-to-implement-continuos-delivery-continuous-d

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:亚马逊网络服务 – Docker和Ansible如何配合实施Continuos Delivery/Continuous Deployment