Ansible跳板機自動部署

首先,安裝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時間調大,避免超時)

相關文章
相關標籤/搜索