virtualBox+centos7+jenkins+ansible部署項目

前言

ansible+jenkins可以輕鬆實現持續集成,寫文章的之前本人利用三臺虛擬機搭建成功,主要記錄關鍵步驟和坑,記性不如爛筆頭。

一、環境準備

1.virtualBox的下載和安裝

這個沒什麼坑的,我的電腦是win10系統,現在對應的virtualBox即可,爲什麼選擇virtualBox,開源免費且輕量化。

2.centos鏡像文件的下載和安裝

這裏注意一下下載centos鏡像文件的min版本就可以,無需界面化等其他軟件。

關於網絡的設置,本人踩得坑還挺多

a.使用橋接模式,此模式更加接近真實環境,而且可以上網,也可以宿主機交互

b.界面名稱選擇圖中的,不要選擇真實的無限網卡或有線網卡,親身經歷,當你的宿主機網絡發生變化時,有可能連不上網,而且也很難設置固定的ip,沒有固定的ip不方便以後的調試。

c.win10如何添加虛擬網卡環回適配器,百度Microsoft loopback Adapter的安裝即可,win10中沒有Microsoft loopback Adapter,而是環回適配器,名稱不一樣注意一下。

d.如何使用這個配置這個環回適配器實現虛擬機可以上網,在真實的網卡屬性裏面有共享設置共享的網絡,配置環回適配器,固定ip,後面設置虛擬機的固定ip會用到

e.虛擬機的網絡設置

ifconfig在最小安裝沒有該命令,使用 ip addr即可,

vi /etc/sysconfig/network-script/ifcfg-xxxx   這裏貼一下關鍵配置  然後systemctl restart network 

關於禁用防火牆  systemctl disable firewalld

f.域名解析的配置

vi /etc/resolv.conf 配置也粘一下,配置一下谷歌的域名解析,然後就可ping baidu.com了

g.win10宿主機上爲方便訪問虛擬機,修改hosts文件,win10找不到hosts文件百度,路徑爲 C:\Windows\System32\drivers\etc\hosts

二.安裝jenkins

這裏下載war版的jenkins 然後java -jar jenkins.war 就可啓動了,默認是8080端口,貼一下界面,關於插件的安裝,新手推薦默認的選項就好了

三、安裝ansible

yum install ansible 就可以了,關於ansible的指令這裏不做介紹,它的原理基於ssh的,無需後天進程守護,也無需客戶機安裝任何東西,打開ssh就可以了。

四、jenkins+ansible持續集成

這裏記錄成功的一個job pipeLine-test2,該job的主要流程,使用的jenkins pipeline

1.從gitee上拉代碼,github太慢了

2.maven構建項目,打成jar包

3.拷貝jar包到ansible的服務器

4.利用ansible服務器發佈項目到其他兩臺服務器

a.這裏的pipeline使用的聲明式的pipeline,這裏主要用了dir和git

dir是改變當前jenkins的工作目錄,git是拉代碼,credentialsId是在jenkins憑據裏配置用戶名和密碼生成的id

pipeline {
   agent any

   stages {
       //拉取代碼
      stage('Pull Source Code') {
         steps {
            dir("appEureka"){
               git(credentialsId: 'be1fa9f2-1a50-4dc5-aa6d-e77bcdad43a1', url: 'https://gitee.com/dahaizhenqiang/app_eureka.git')  
            }
         }
      }
      //構建
       stage('build appEureka') {
         steps {
            dir("appEureka"){
                sh 'mvn -Dmaven.test.skip=true clean install'
                sh "cp target/*.jar ${JENKINS_HOME}/workspace/${MCS_NAME}/"
            }
         }
      }
      //複製
       stage('copy package to ansible server') {
         steps {
             node(label:'centos7-2'){
                sh "mkdir -p /tmp/${JOB_NAME}-${BUILD_NUMBER}"
             }
             echo "starting copy "
			 sh "sshpass -p 'rbzOFbcvnsPgNlEG' scp ${JENKINS_HOME}/workspace/${MCS_NAME}/*.jar songhq@centos7-2:/tmp/${JOB_NAME}-${BUILD_NUMBER}/"
             node(label: 'centos7-2') {
    			sh "rm -rf ~/${MCS_NAME}"
                sh "ln -s /tmp/${JOB_NAME}-${BUILD_NUMBER} ~/${MCS_NAME}"
                sh "cp ~/${MCS_NAME}/*.jar ~/${MCS_NAME}/pkg.ready"
			}
         }
      }
     stage('use ansible playbook to restart server') { 
		steps {
            node(label: 'centos7-2') {
				sh "ansible-playbook -i /home/songhq/deploy_playbook/app_eureka_host /home/songhq/deploy_playbook/app_eureka.yaml"
            }
		}
    }
     
   }
   environment {
	MCS_NAME = 'pipeLine-test2'
  }
}

b.這裏ansible使用的是ansible-playbook ,這裏貼一下app_eureka.yaml文件和app_eureka_host文件

---
- hosts: all
  user: songhq
  tasks:
    - name: backup app_eureka module package
      shell: mkdir -p /home/songhq/app/app_eureka.backup;mkdir -p /home/songhq/app/app_eureka;if [-f "/home/songhq/app/app_eureka/app_eureka-0.0.1-SNAPSHOT.jar"];then c
p /home/songhq/app/app_eureka/app_eureka-0.0.1-SNAPSHOT.jar /home/songhq/app/app_eureka/app_eureka-0.0.1-SNAPSHOT.jar$(date +%Y%m%d%H%M);fi
    - name: copy lastest app_eureka module package
      copy:
        src: /home/songhq/pipeLine-test2/pkg.ready
        dest: /home/songhq/app/app_eureka/app_eureka-0.0.1-SNAPSHOT.jar
        owner: songhq
        group: songhq
        mode: 0777
    - name: copy module shell
      copy:
         src: /home/songhq/deploy_playbook/restart.sh
         dest: /home/songhq/app/app_eureka/restart.sh
         owner: songhq
         group: songhq
         mode: 0777
    - name: restart app_eureka
      shell: /home/songhq/app/app_eureka/restart.sh

[all:vars]
ansible_ssh_user='songhq'
ansible_ssh_pass='xxxxx'

[app_eureka]
centos7-1
centos7-3

最後的結果就是在centos7-1和centos7-3兩臺的機器上部署app_eureka這個微服務

效果如圖,自此,項目發佈完成,當然不是特別完善,沒有考慮回滾

 

發佈了37 篇原創文章 · 獲贊 6 · 訪問量 9271
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章