jenkins通過配置ansible傳輸檔案,並且排程服務
阿新 • • 發佈:2019-02-11
最近在研究jenkins,最後卡在了war包傳輸的問題。看見同事配置了使用ansible,記錄一下相關指令碼。
1、首先安裝ansible
推薦用yum install ansible。
如果沒有映象源,請如下使用:
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
yum install ansible
2、jenkins部署機器生產rsa公鑰,放入到業務程式部署機
3、在jenkins的post steps之後,配置
附上shell
#定義常量 WORKSPACE=`pwd` WAR_DIR=${WORKSPACE}/${PROJ_NAME}-web/target JETTY_DIR=/data/www/java/work/${PROJ_NAME}-jetty REMOTE_DEPLOY_DIR=${JETTY_DIR}/webapps INVENTORY_FILE=/tmp/${PROJ_NAME}-inventory-${JOB_NAME##*/} INVENTORY_TEMPLATE=/opt/jenkins/default_inventory_template cd $WAR_DIR #準備Inventory cat ${INVENTORY_TEMPLATE} > ${INVENTORY_FILE} echo ${DEPLOY_HOST} >> ${INVENTORY_FILE} #刪除遠端伺服器部署檔案 ansible -i ${INVENTORY_FILE} all -m raw -a "rm -rf ${REMOTE_DEPLOY_DIR}/${PROJ_NAME}-web.war" #COPY檔案到遠端伺服器部署目錄 ansible -i ${INVENTORY_FILE} all -m copy -a "src=${WAR_DIR}/${PROJ_NAME}-web.war dest=${REMOTE_DEPLOY_DIR}/" #重啟jetty ansible -i ${INVENTORY_FILE} all -m shell -a "${JETTY_DIR}/bin/jetty.sh restart"
注意1:/opt/jenkins/default_inventory_template,模板內容如下
[deploy]
INVENTORY_FILE最終的樣子是,如下,第二行的ip就是應用的部署機器
[deploy]
192.168.142.12
注意2:jenkins需要配置幾個引數
PROJ_NAME: #專案的名字
DEPLOY_HOST: #業務應用部署的機器