首先,安裝ansible,略過此步驟。java
1、控制機(jenkens、ansible所在機器與跳板機之間互信,跳板機與目的機之間互信)git
1.在客戶端生成公鑰私鑰對web
命令:ssh-keygen -t rsashell
一路默認回車,系統在/root/.ssh下生成id_rsa、id_rsa.pub服務器
2.查看系統生成的公鑰私鑰對ssh
命令:ls /root/.ssh測試
能夠看到以下的文件spa
3.將生成的公鑰私鑰對id_rsa.pub發送到其餘的服務器上。代理
命令:ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.137.129server
注:命令可簡單記憶爲 ssh-copy-id -i 公鑰私鑰對文件 服務器ip地址
能夠看到成功將公鑰私鑰對發送到了其餘服務器,更多服務器同樣操做便可。
4.如今能夠測試鏈接其餘服務器是否不須要密碼登陸,能夠看到確實成功了。
登陸其餘服務器命令:ssh 192.168.137.130 #ssh serverid
2、跳板機安裝nc命令
一、上傳(此文件備份在jenkens服務器192.168.3.83的/opt目錄)至跳板機
二、執行rpm -iUv nc-1.84-22.el6.x86_64.rpm
三、執行nc -help確認命令是否成功安裝
3、測試ssh經過跳板機代理鏈接目的機是否成功
ssh -o "ProxyCommand ssh -p 22 root@192.168.40.115 nc -w 1000 %h %p" -p 22 root@192.168.40.116
4、修改ansible操做主機配置文件及編寫ansible執行劇本
一、vi /etc/ansible/hosts
增長配置(如下舉例)
[webservers] # 這是目的機別名
192.168.40.116
[webservers:vars]# 這是目的機對應配置變量,這裏用ansible代理,192.168.40.115做爲跳板機
ansible_ssh_common_args=' -o "ProxyCommand ssh -o ConnectTimeout=6000000 -p 22 root@192.168.40.115 nc -w 100000 %h %p"'
二、編寫ansible劇本playbook
新增劇本,取名*.yaml
---
- hosts: webservers ---操做主機別名
tasks:
- name: 獲取本地jar包
local_action: shell ls /var/lib/jenkins/workspace/ttt/target/alarmprovince*.jar
register: file_name
- name: 刪除目標主機上面的備份jar包
shell: rm -f /tmp/alarmprovince.jar.bak
ignore_errors: true
- name: 備份原來jar包
shell: mv /tmp/alarmprovince.jar /tmp/alarmprovince.jar.bak
ignore_errors: true
- name: 拷貝jar包到目標機器
copy: src="{{ file_name.stdout }}" dest=/tmp/alarmprovince.jar
- name: 關閉java進程
shell: ps -ef|grep alarmprovince|grep jar|grep -v grep |awk '{print $2}' |xargs kill -9
ignore_errors: true
- name: 後臺不掛起啓動
shell: nohup java -jar /tmp/alarmprovince*.jar &
- name: 刪除本地jar包
local_action: shell rm -f /var/lib/jenkins/workspace/ttt/target/alarmprovince*.jar
5、配置jenkens
一、配置項目git路徑
二、配置mvn構建
三、新增ansible劇本執行(配置操做主機(別名)及指定執行劇本)
6、構建及發佈
點擊構建,發佈成功
(ps:修改ansible_config配置文件,將ssh_timeout時間調大,避免超時)