首先,安装ansible,略过此步骤。

一、控制机(jenkens、ansible所在机器与跳板机之间互信,跳板机与目的机之间互信)

1.在客户端生成公钥私钥对

命令:ssh-keygen -t rsa

一路默认回车,系统在/root/.ssh下生成id_rsa、id_rsa.pub

2.查看系统生成的公钥私钥对

命令:ls /root/.ssh

可以看到如下的文件

3.将生成的公钥私钥对id_rsa.pub发送到其他的服务器上。

命令:ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.137.129

注:命令可简单记忆为 ssh-copy-id -i 公钥私钥对文件 服务器ip地址

可以看到成功将公钥私钥对发送到了其他服务器,更多服务器一样操作即可。

4.现在可以测试连接其他服务器是否不需要密码登录,可以看到确实成功了。

登录其他服务器命令:ssh 192.168.137.130     #ssh serverid

二、跳板机安装nc命令

1、上传(此文件备份在jenkens服务器192.168.3.83的/opt目录)至跳板机

2、执行rpm  -iUv  nc-1.84-22.el6.x86_64.rpm

3、执行nc -help确认命令是否成功安装

三、测试ssh通过跳板机代理连接目的机是否成功

ssh -o "ProxyCommand ssh -p 22 root@192.168.40.115 nc -w 1000 %h %p" -p 22 root@192.168.40.116

四、修改ansible操作主机配置文件及编写ansible执行剧本

1、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"'

2、编写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

五、配置jenkens

  1、配置项目git路径

  2、配置mvn构建

  

  3、新增ansible剧本执行(配置操作主机(别名)及指定执行剧本)

六、构建及发布

  点击构建,发布成功

(ps:修改ansible_config配置文件,将ssh_timeout时间调大,避免超时)

Ansible跳板机自动部署的更多相关文章

  1. SecureCRT实现跳板机自动登录

    背景: 1.通常运维会开放几个内网的机器能跳转到外网机器进行访问,这样的就是跳板机. 2.比如线上有120.0.0.2这台机器,而内网192.168.1.2这台连接了VPN,能通过SSH登录120.0 ...

  2. jumpserver(0.3.2版本)开源跳板机系统部署

    1. 介绍 JumpServer亮点: 集成Ansible,批量执行命令: 支持WebTerminal wiki地址:https://github.com/jumpserver/jumpserver/ ...

  3. Linux下使用expect实现跳板机自动跳转/免密登录/自动登录(转)

    shell脚本实现ssh自动登录远程服务器示例: #!/usr/bin/expect spawn ssh root@192.168.22.194 expect "*password:&quo ...

  4. docker-compose之跳板机jumpserver部署

    下载docker-compose curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.1/docker-comp ...

  5. 【自动部署】Ansible 怎么通过堡垒机/跳板机 访问目标机器

    Ansible机器的 /root/.ssh/config 配置如下即可:Host 目标机器IP User root IdentityFile=/root/.ssh/xxx_id_rsa ProxyCo ...

  6. Jenkins + Maven + Ansible + Tomcat 实现JAVA代码自动部署

    自动部署过程: jenkins从svn拉取代码,调用maven去打war包,用ansible去解压war包,最后重启tomcat. 前情回顾:在前面的文章我的环境已经有Jenkins+ansible ...

  7. 使用Ansible进行项目的自动部署(Tomcat、Weblogic)

    原文:https://github.com/x113773/testall/issues/4 问题:Weblogic/Tomcat 通过JAVA直接远程调用或者调用本地Shell还是通过Ansible ...

  8. jenkins + supervisor + ansible 实现netcore程序的多机一键部署

    上一篇我们简单的说到了使用jenkins+supervisor实现了一个单机版的多副本部署,但是在更多的场景下还是需要netcore程序的多机一键部署,那么多 机器间如何分发呢? 肯定不能使用scp这 ...

  9. Linux系统——JumpServer跳板机的搭建和部署

    公网源部署jumpserver跳板机 建立阿里云公网源yum仓库(服务端)[root@localhost ~]# lsanaconda-ks.cfg install.log.syslog jumpse ...

随机推荐

  1. HDU 1003 Max Sum (动态规划 最大区间和)

    Max Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  2. 记一次程序从x86_64linux平台移植到armv7平台

    前言 最近接了个任务,需要把代码移植到armv7平台,搜寻相关方法,了解到可以利用交叉编译工具如:gcc-linaro-arm-linux-gnueabihf.把自己依赖的第三方库代码和自己代码分别编 ...

  3. 分位数回归及其Python源码

    分位数回归及其Python源码 天朗气清,惠风和畅.赋闲在家,正宜读书.前人文章,不得其解.代码开源,无人注释.你们不来,我行我上.废话少说,直入主题.o( ̄︶ ̄)o 我们要探测自变量 与因变量 的关 ...

  4. echarts图标使用(一)

    var data = []; // Parametric curve // for (var t = 0; t < 25; t += 0.001) { // var x = (1 + 0.25 ...

  5. 18.AutoMapper 之条件映射(Conditional Mapping)

    https://www.jianshu.com/p/8ed758ed3c63 条件映射(Conditional Mapping) AutoMapper 允许你给属性添加条件,只有在条件成立的情况下该成 ...

  6. vim下使用UltiSnips

    vim下使用UltiSnips 最近在学习Linux编程,相应的也在学vim.vim中的UltiSnips插件可以实现比一般的代码补全更为强大的效果.这里就记录一下吧. UltiSnips安装.基础及 ...

  7. 求x到y的最少计算次数 (BFS)

    时间限制:1秒 空间限制:262144K 给定两个-100到100的整数x和y,对x只能进行加1,减1,乘2操作,问最少对x进行几次操作能得到y? 例如:a=3,b=11: 可以通过3*2*2-1,3 ...

  8. C++ 大数运算(加减乘除取模)

    加法:(字符串模拟小学加法) string add(string s1, string s2) { int len1 = s1.length(), len2 = s2.length(); ; '); ...

  9. Vue中的组件直接的通信是如何实现的

    组件关系可分为父子组件通信.兄弟组件通信 1.父组件传子组件 通过props属性来实现 2.子组件传父组件 子组件用$emit()来触发事件,父组件用$on()来监听子组件的事件 3.兄弟之间的通信 ...

  10. vuex的简单理解

    初次接触vuex,谈谈我自己的理解.有待后期改进 首先要知道,Vuex 是专门为 Vue.js 设计的状态管理库.我们知道在用vue.js进行前端项目开发时,会出现很多组件相互之间调用属性.状态,小项 ...