【DEVOPS】Jenkins集成Ansible的两种方式
本文对Jenkins集成Ansible实现自动化部署的两种方式进行分别的介绍
·
本文对Jenkins集成Ansible实现自动化部署的两种方式进行分别的介绍。
1. 概述
本文将介绍Jenkins集成Ansible的两种方式,分别说明其实现方式和优缺点,方便读者快速抉择。
2. 集成
2.1 专门的Jenkins插件
具体的安装过程这里就不赘述了,这里只大概列举下安装步骤:
- 在Jenkins所在服务器上,使用pip方式安装Ansible(当然你用其他方式也可以)。
- 安装Jenkins的Ansible插件。 这里给出一个Ansible插件地址。
- 配置Ansible插件。
Pipeline相关:
stage('部署'){
steps {
// 这里的 ansible2.10.2 和上面截图中的配置对应
// 以下脚本可以借助Jenkins提供pipeline syntax 来辅助生成。需要注意的是 辅助工具生成的字符串使用的是单引号, 如果你要使用如下图中的占位符, 那就需要将单引号改为双引号。
ansiblePlaybook( installation: 'ansible2.10.2',
inventory: "${env.WORKSPACE}/doc/ansible/hosts",
playbook: "${env.WORKSPACE}/doc/ansible/playbook.yaml")
}
}
相应的hosts, playbook.yaml里的内容如下:
##### 目录结构如下:
doc/
ansible/
host_vars/
172.16.3.170
hosts
playbook.yaml
src/ # Maven标准结构
Jenkinsfile
##### hosts
[windows_170]
172.16.3.170
##### 172.16.3.170 (是的, 这个是个文件名)
ansible_ssh_user: "administrator"
ansible_ssh_pass: "password"
ansible_ssh_port: 5985
ansible_connection: "winrm"
ansible_winrm_server_cert_validation: "ignore"
##### playbook.yaml
---
- hosts: windows_170
tasks:
- debug: msg="fulizhe------------"
优点:
- Ansible脚本被SCM版本控制,有助于追踪历史记录。
- Ansible脚本与项目捆绑,容易查找并进行二次开发。
缺点:
- 积累难以复用,很容易陷入各自为战。
- 运维工作交给研发,在DEVOPS推进前期阻力比较大。
2.2 直接借助SSH
关键字sshPublisher
。
sshPublisher(
publishers: [
sshPublisherDesc(
configName: 'ansibleServerIn254',
transfers: [
sshTransfer(
excludes: '',
execCommand: '''
cd /etc/ansible/playbooks/common
ansible-playbook windows_deploy_sb_common.yaml \
-e "APP_VERSION=${DEPLOY_VERSION}" -e "GROUP_ID_NEW=${GROUP_ID}" \
-e "ARTIFACT_ID=${ARTIFACT_ID}" -e "TARGET=${SERVER}" -e "SERVER_PORT=${SERVER_PORT}"
''',
)
],
verbose: true
)
]
)
优点:
- Jenkins和Ansible分开部署,各自发展,避免一锅端。
- Ansible脚本集中管理,方便知识共享。
缺点:
- 个性化比较麻烦,比如针对已有项目的适配。
3. 参考
- 《Jenkins2.x实践指南》 12.2.2小节
- Jenkins官方插件Ansible
更多推荐
已为社区贡献3条内容
所有评论(0)