首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >这也能用Jenkins?快速实现一个定期批量登录远程虚拟机并支持添加新的主机名称的Job

这也能用Jenkins?快速实现一个定期批量登录远程虚拟机并支持添加新的主机名称的Job

原创
作者头像
Peter Shen
修改2020-06-15 17:20:25
4830
修改2020-06-15 17:20:25
举报
文章被收录于专栏:持续集成持续集成

背景

实现定期批量登录远程虚拟机然后进行一些指定的操作,还支持用户添加新的 hostname。

需求分解

通过一个简单的 shell 脚本可实现定期进行 ssh 登录操作,但如何实现的更优雅一些就需要花点时间了,比如:

  1. 定期自动执行
  2. 输出比较直观的登录测试结果
  3. 支持用户添加新的 hostname 到待检查列表中
  4. 执行完成后,通知用户等等

希望在不引入其他 Web 页面的情况下通过现有的工具 Jenkins 使用 Shell 脚本如何实现呢?

  1. 写一个脚本去循环一个 list 里所有的 hostname,经过考虑这个 list 最好是一个 file,这样方便后续处理。
  2. 这样当用户通过执行 Jenkins job 传入新的 hostname 时,使用新的 hostname 到 file 里进行 grep,查看是否已存在。
  3. 如果 grep 到,不添加;如果没有 grep 到,将这个 hostname 添加到 file 里。
  4. 将修改后的 file 添加到 git 仓库里,这样下次 Jenkins 的定时任务就会执行最近添加的 hostname 了。

实现重点

  1. 使用 expect。在使用 ssh 连接远程虚拟机的时候需要实现与远程连接时实现交互,例如:可以期待屏幕上的输出,然后进而进行相应的输入。在使用 expect 之前需要先安装,以 Redhat 的安装命令为例:sudo yum install expect 来进行安装。 有关 expect 使用的可以参看这个连接:http://xstarcd.github.io/wiki/shell/expect.html
  2. 使用了 Shell 数组。使用 Shell 读取文件数据,进行登录操作,将操作失败的记录到一个数组里,然后打印出来。
  3. 在通过 Jenkins 提交新的 hostname 到 Git 仓库时,origin 的 URL 需要是 https://${USERNAME}:${PASSWORD}@git.company.com/scm/vmm.gitgit@company.com:scm/vmm.git(需要提前在执行机器上生成 id_rsa.pub 并配置)

代码已经上传 GitHub 请参看 https://github.com/shenxianpeng/vmm.git

最终效果

开始执行,提供输入新的 hostname

执行完成,将执行结果归档以便查看

打开归档结果如下

#####################################################
######### VM login check via SSH results ############
#####################################################
#                                                   #
# Compelted (success) 14/16 (total) login vm check. #
#                                                   #
# Below 2 host(s) login faied, need to check.       #
#                                                   #
      abc.company.com
      xyz.company.com
#                                                   #
#####################################################

最后

现在技术的更新非常快,尤其作为 DevOps 工程师,各种工具层出不穷,想要每一样工具都掌握几乎是不可能的。

只学习工具不了解其背后的原理,等到新工具出现替换掉旧的工具,那么这些年是没有进步的。

只有认真的把在工作中遇到的每个问题背后来龙去脉去搞懂,才能把地基打的稳,以后不论工具怎么变,学习起来都会很快。

掌握操作系统,Shell,以及一门擅长的编程语言之后再去学习那些工具,要不永远都是漂浮在空中。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需求分解
  • 实现重点
  • 最终效果
    • 开始执行,提供输入新的 hostname
      • 执行完成,将执行结果归档以便查看
        • 打开归档结果如下
        • 最后
        相关产品与服务
        CODING DevOps
        CODING DevOps 一站式研发管理平台,包括代码托管、项目管理、测试管理、持续集成、制品库等多款产品和服务,涵盖软件开发从构想到交付的一切所需,使研发团队在云端高效协同,实践敏捷开发与 DevOps,提升软件交付质量与速度。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档