jenkins之pipeline及结合ansible参数化构建

目录

pipeline

 jenkins结合ansible参数化构建


pipeline

Jenkins的Pipeline可以让项目的发布整体流程可视化,明确执行的阶段,可以快速的定位问题。并且整个项目的生命周期可以通过一个Jenkinsfile文件管理,而且Jenkinsfile文件是可以放在项目中维护。

所以Pipeline相对自由风格或者其他的项目风格更容易操作。

安装ssh agent 插件

 新建流水线项目

复制一下脚本并做相应修改

pipeline {

agent any #定义在所有agent跑

stages {

stage('check out') {

steps { #通过git拉取代码,将之前的交互式变成标准化

git credentialsId: '2916f70d-6740-45dc-b4ca-50dd5aecfb8f', url: 'git@192.168.56.175:root/project1.git', branch: 'main'

}

}

stage('docker build') { #构建

steps {

sh '''

cd $WORKSPACE

docker build -t reg.westos.org/library/demo:${BUILD_NUMBER} .

'''

}

}

stage('docker push') {#推送到仓库

steps {

sh '''

REPOSITORY=reg.westos.org/library/demo:${BUILD_NUMBER}

docker tag $REPOSITORY reg.westos.org/library/demo:latest

docker login reg.westos.org -u admin -p westos

docker push $REPOSITORY

docker push reg.westos.org/library/demo:latest

'''

}

}

stage('docker deploy') {#部署

steps {

sshagent(credentials: ['2916f70d-6740-45dc-b4ca-50dd5aecfb8f']) {

sh '''

ssh -o StrictHostKeyChecking=no root@192.168.56.177 """

docker ps -a |grep myapp && docker rm -f myapp

docker rmi demo:latest #删除以上新镜像

docker run -d --name myapp -p 80:80 demo:latest """

'''

}

}

}

}

}

保存并立即构建

 jenkins结合ansible参数化构建

净化环境,恢复master节点工作任务数2,去掉agent节点,禁用了docker项目

jenkins结合ansible部署apache

 主机环境

主机

IP

角色

vm6

192.168.56.176

jenkinsansible

vm7

192.168.56.177

测试机、devops sudo

vm8

192.168.56.178

测试机、devops sudo

ansible主机上以jenkins身份配置ssh免密到所有测试机

devops是测试机的ssh免密用户,并且配置sudo

 安装ansible,解决依赖性

gitlab上新建ansible项目,使用gitlab托管playbook文件

[root@vm5 ~]# git clone git@192.168.56.175:root/ansible.git

[root@vm5 ~]# cd ansible/

创建管理对象文件,生产的和测试的端口不同

[root@vm5 ansible]# mkdir inventory

[root@vm5 ansible]# cd inventory/

[root@vm5 inventory]# vim prod

[prod]

192.168.56.177 http_port=80

[root@vm5 inventory]# vim test

[root@vm5 inventory]# cat test

[test]

192.168.56.178 http_port=8080

配置文件

[root@vm5 inventory]# cd ..

[root@vm5 ansible]# vim ansible.cfg

[defaults]

command_warnings=False

remote_user=devops

[privilege_escalation]

become=True

become_method=sudo

become_user=root

become_ask_pass=False

[root@vm5 ansible]# vim playbook.yml

  1. hosts: all

tasks:

- name: install apache

yum:

name: httpd

state: present

- name: configure apache

template:

src: httpd.conf.j2

dest: /etc/httpd/conf/httpd.conf

notify: restart apache

- name: start apache

service:

name: httpd

state: started

enabled: yes

handlers:

- name: restart apache

service:

name: httpd

state: restarted

修改端口,测试和生产用变量取传递

[root@vm5 ansible]# yum install -y httpd

[root@vm5 ansible]# cp /etc/httpd/conf/httpd.conf ~/ansible/httpd.conf.j2

[root@vm5 ansible]# vim httpd.conf.j2

...

Listen {{ http_port }}

当前目录全部提交

[root@vm5 ansible]# git add .

[root@vm5 ansible]# git commit -m "add playbook"

[root@vm5 ansible]# git push -u origin main

jenkins新建项目playbook

 

 执行shell脚本,切到工作目录,运行指令

 开始构建,测试环境

 输出成功

 生产环境同理

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值