持续集成与持续交付(CI/CD)<5>--jenkins结合ansible完成自动交付、搭建harbor仓库,结合jenkins完成从harbor仓库拉取镜像启动容器

一、jenkins结合ansible完成自动交付

  • 我们的目的是完成一个参数化构建过程,利用ansible自动部署工具,与jenkins匹配,最终完成参数化构建过程

在jenkins服务器上安装ansible,部署好jenkins用户到目标主机的ssh免密

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

gitlab仓库新建项目playbook

在这里插入图片描述

在server1上克隆项目到本地仓库并编辑ansible相关部署文件

[root@server1 playbook]# tree .
.
├── ansible.cfg
├── httpd.conf.j2
├── inventory
│   ├── prod
│   └── test
├── playbook.yml
└── README.md

[root@server1 playbook]# cat ansible.cfg 
[defaults]
command_warnings=False
remote_user=devops

[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False

[root@server1 playbook]# cat playbook.yml 
---
- hosts: all
  tasks: 
  - name: install apache
    yum:
      name: httpd
      state: present
  - name: config apache
    template:
      src: httpd.conf.j2
      dest: /etc/httpd/conf/httpd.conf
    notify: restart apache
  - name: enable apache
    service:
      name: httpd
      state: started
      enabled: yes
  - name: create index.html
    lineinfile: 
      path: /var/www/html/index.html
      create: yes
      line: "{{ ansible_hostname }}"
  handlers:
  - name: restart apache
    service:
      name: httpd
      state: restarted
[root@server1 playbook]# cd inventory/
[root@server1 inventory]# pwd          %inventory目录中存放的是主机对象
/root/playbook/inventory
[root@server1 inventory]# cat prod 
[prod]
172.25.0.3 http_port=80
[root@server1 inventory]# cat test 
[test]
172.25.0.1 http_port=8000

[root@server1 playbook]# vim httpd.conf.j2 
Listen {{ http_port }}           %将端口定义为变量的形式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • server3上安装httpd,并将/etc/httpd/conf/httpd.conf文件复制到server1的playbook目录下
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在jenkins中新建项目,设置手动参数式触发,prod为生产环境主机,test为测试主机

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 切到项目的工作区然后选择inventory下的对象主机推送ansible任务
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

server1为test主机(测试环境),做相关配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

将所有更改提交并push到远程gitlab仓库

在这里插入图片描述

参数化构建测试

  • 选择test主机进行部署测试,查看部署是否成功
    在这里插入图片描述
    在这里插入图片描述

添加apache测试页并重新测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 选择prod主机(生产环境)进行构建测试
    在这里插入图片描述
    在这里插入图片描述

二、搭建harbor仓库,结合jenkins完成从harbor仓库拉取镜像启动容器

安装配置harbor仓库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试:上传镜像至harbor仓库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

更改test项目配置,设置从harbor仓库中拉取镜像

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

禁用docker项目

在这里插入图片描述

测试test项目,看能否自动将构建好的镜像上传到harbor仓库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

配置server3(habor仓库)的相关参数,更改其默认拉取镜像的路径并作测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

更改docker项目配置,使之能够从harbor仓库拉取镜像并启动容器

在这里插入图片描述

测试是否在目的环境启动相关容器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<properties> <hudson.security.AuthorizationMatrixProperty> <inheritanceStrategy class="org.jenkinsci.plugins.matrixauth.inheritance.InheritParentStrategy"/> <permission>USER:hudson.model.Item.Read:anonymous</permission> </hudson.security.AuthorizationMatrixProperty> <jenkins.model.BuildDiscarderProperty> <strategy class="hudson.tasks.LogRotator"> <daysToKeep>90</daysToKeep> <numToKeep>-1</numToKeep> <artifactDaysToKeep>30</artifactDaysToKeep> <artifactNumToKeep>-1</artifactNumToKeep> </strategy> </jenkins.model.BuildDiscarderProperty> <com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty plugin="gitlab-plugin@1.7.7"> <gitLabConnection>src.ift.run</gitLabConnection> <jobCredentialId/> <useAlternativeCredential>false</useAlternativeCredential> </com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty> <com.sonyericsson.rebuild.RebuildSettings plugin="rebuild@1.34"> <autoRebuild>false</autoRebuild> <rebuildDisabled>false</rebuildDisabled> </com.sonyericsson.rebuild.RebuildSettings> <hudson.plugins.throttleconcurrents.ThrottleJobProperty plugin="throttle-concurrents@2.11"> <maxConcurrentPerNode>3</maxConcurrentPerNode> <maxConcurrentTotal>0</maxConcurrentTotal> <categories class="java.util.concurrent.CopyOnWriteArrayList"/> <throttleEnabled>true</throttleEnabled> <throttleOption>project</throttleOption> <limitOneJobWithMatchingParams>false</limitOneJobWithMatchingParams> <paramsToUseForLimit/> <configVersion>1</configVersion> </hudson.plugins.throttleconcurrents.ThrottleJobProperty> <jenkins.branch.RateLimitBranchProperty_-JobPropertyImpl plugin="branch-api@2.1071.v1a_188a_562481"> <durationName>hour</durationName> <count>40</count> <userBoost>true</userBoost> </jenkins.branch.RateLimitBranchProperty_-JobPropertyImpl> </properties> 这是jenkin中 job定义中的一段,请解释这一段的含义
最新发布
07-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值