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时间调大,避免超时)

相关文章
相关标签/搜索