在 Jenkins 管道中使用 Ansible 进行部署

Posted

技术标签:

【中文标题】在 Jenkins 管道中使用 Ansible 进行部署【英文标题】:Deployment with Ansible in Jenkins pipeline 【发布时间】:2019-08-04 08:14:48 【问题描述】:

我有一个 Ansible 剧本来在 AWS EC2 上部署一个 java 应用程序 (jar)。我想在 Jenkins 管道中使用它作为“部署”步骤。要在 EC2 上部署,我需要在创建实例时下载私有 ssh 密钥。

我有两个选择:

    在托管 Jenkins 的机器上安装 ansible,在 Jenkins 中插入私有 SSH 密钥,并使用 ansible-playbook 插件部署我的应用 获取一个安装了 ansible 的基础 docker 镜像,通过插入我的私有 SSH 密钥来扩展它,然后使用这个 docker 镜像来部署我的应用程序

从安全的角度来看,什么是最好的?

【问题讨论】:

3.使用秘密管理工具 4. 使用这个:wiki.jenkins.io/display/JENKINS/SSH+Credentials+Plugin 【参考方案1】:

对于选项 1,建议创建一个新用户帐户,例如没有 sudo 权限的 EC2 实例中的 jenkins,或者至少有密码保护的 sudo 使用 Ansible 管理这些用户帐户是一个很好的场景,它限制了 AWS 创建的超级密钥的使用

虽然对于选项 2,Docker 是一个很好的不可变部署场景,这意味着在镜像准备好之前就应该确定配置,因此 Ansible 在这种情况下并不是很有用。 不同的conf意味着要创建不同的图像 也许你仍然使用 Ansible 来管理那些 DockerFiles,而不是启动 Ansible 并与应用程序本身进行交互

就您如何设计系统而言,这两个选项看起来完全不同,而不是安全问题

请让我知道您需要更多说明

【讨论】:

以上是关于在 Jenkins 管道中使用 Ansible 进行部署的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Jenkins 管道中使用 SSH?

在 Jenkins 声明式管道中使用 waitForQualityGate

在Jenkins构建管道中下载工件

Jenkins 2.0:ansiblePlaybook插件

jenkins集成pipeline,ansible流程

在 Jenkins 中使用多分支管道“定期构建”