devops:改变思维,让一切更加高效OpsDevdevops tools

使用Ansible Tower与Jenkins集成实现CI/CD

2019-05-26  本文已影响60人  潘晓华Michael

Ansible Tower是什么?

Ansible Tower是一个基于Web的用户界面,提供了IT自动化的企业解决方案。它有一个友好用户的仪表板来管理部署和监控资源。Ansible Tower为Ansible增加自动化,可视化管理和监控能力。

为什么要使用Ansible Tower替换Ansible与Jenkins集成?

使用Ansible Tower与Jenkins集成,打开了一个充满可能性的世界。
与一篇中介绍的《Ansible与Jenkins集成实现CI/CD》进行比较,它可以从Jenkins中删除很多配置,比如部署应用的服务器的访问配置,管理playbook执行,最重要的是,避免在Jenkins端配置SSH密钥,同时Jenkins不需要知道应用程序的部署服务器地址:它可能位于公有云中,物理机中,甚至是笔记本电脑上的虚拟客户端。 把这些配置与过程都放到Ansible Tower中进行集中管理。

Ansible Tower的组件

Ansible Tower组件

说明:当然以上说明只是各组件最简单的功能介绍,其实每个组件的功能都会更加丰富,我们可以自己部署Ansible Tower,并通过具体的使用来熟悉各组件的功能。

怎样集成Ansible Tower与Jenkins?

前提:部署好了Ansible Tower和Jenkins

Ansible Tower上的设置

Ansible Tower创新建用户jenkins 新建Project Inventories创建 添加主机 对Inventories授权 应用服务器登录密钥 对认证信息授权给Jenkins用户 Job Template

补充:

  1. EXTRA VARIABLES是额外的补充参数。
  2. 大部分参数都有PROMPT ON LAUNCH选项,这个是在Template Job实际运行时,通过用户交互的方式进行配置
  3. SURVEY的配置有更加友好的方式与用户交互进行配置参数

Jenkins上的设置

Jenkins 安装Ansible Tower插件 添加Ansible Tower用户 设置Ansible Tower信息
pipeline{
    agent any
    stages{
        statge("构建应用"){
            echo '构建应用'
        }
        statge("Jar包上传"){
            echo 'Jar包上传到Nexus,以供Ansible Tower中的playbook下载部署'
        }
        stage("触发Ansible Tower Job"){
            ansibleTower credential: '2', 
                extraVars: '''APPNAME: App
    ARTIFACT_URL: http://test.com/app/1.0.jar''', 
                importTowerLogs: false, 
                inventory: '2',
                jobTemplate: '8', 
                templateType: 'job', 
                throwExceptionWhenFail: false, 
                towerServer: 'ansible tower', 
                verbose: false
        }
    }
}

通过Jenkins Job的触发就会触发Ansible Tower中id为8的Job Template生成新的Job进行应用部署。

最后一句话作为总结:
Ansible Tower与Jenkins双剑合璧才是运维自动化正确的打开方式。

参考资料

Take Ansible and Jenkins Integration to the next level: CI/CD with Ansible Tower
Ansible Tower官方文档

上一篇 下一篇

猜你喜欢

热点阅读