Email 连接: lonnyliu@126.com


需求

  在使用Ansible过程中不可避免需要了解远端服务器是否能够联通外网,以便进行在线安装软件或者其他.对于运维人员来说普遍的办法有

  1. 登录到每台服务器进行 ping 测试(基本上这个时候 `www.baidu.com` 派上用场了)
2. 使用Ansible直接对以定义好的主机进行远端执行shell命令 以上两种第一种有可能是普遍的方式,第二种有一部分人在使用但也不否定有其他更好的办法

目标

  快速获取远端服务器连接 Internet 情况

实现

1. 配置Ansible 关闭或者使用缓存进行 facts 收集
2. 进行自定义模块进行远端服务器连接 Internet 测试
3. 收集结果结果做后续使用

代码

  • ansible 配置文件
# cat /etc/ansible.cfg
[defaults]
hostfile = path # hosts 文件存放位置
roles_path = path # roles 角色目录存放位置
library = path # 自定义模块存放问题
remote_user = root # 远程连接用户
private_key_file = path # 公钥存放位置
host_key_checking = False
deprecation_warnings=False # 配置使用本地 redis 缓存--自行配置
gathering = smart
fact_caching = redis
fact_caching_timeout = 86400
fact_caching_connection = 127.0.0.1:6379:0:ansiblefact
  • 自定义模块

具体模块介绍请查看官网链接

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author EdwardLiu """
检测是否可以连通外网, 使用 url方式, url 为可变参数
""" from ansible.module_utils.basic import *
import urllib2 def internet_on(url): try: urllib2.urlopen(url, timeout=1) results = {
'status': 0,
'messages': "Connection"
} return results except urllib2.URLError as err: results = {
'status': 1,
'messages': "Failed"
} return results if __name__ == '__main__':
refactor_module = AnsibleModule(
argument_spec=dict(
url=dict(required=True),
),
) url = "http://" + refactor_module.params['url'] if internet_on(url)['status'] == 0: result = dict(module='timezone', stdotut=internet_on(url)['messages'], changed=False, rc=0) refactor_module.exit_json(**result) else: result = dict(msg='execute failed', rc=internet_on(url)['status'])

使用介绍

ansible--Ad-Hoc Commands(使用命令行)

  ansible pipeline -m checknetwork -a "url=www.baidu.com"
pipeline: hosts 文件中组名称
checknetwork: 自定义模块名称
url=www.baidu.com 测试外网连接的 URL

效果:

附ansible playbooks使用案例

---
# 判断是否有外网
- name: checkne internet connection
checknetwork: url={{ check_url }}
register: result - debug:
msg: "System {{ inventory_hostname }} has Connection internet!!!"
when: result.stdotut == 'Connection'

Ansible 远程服务器连接 Internet 测试的更多相关文章

  1. (数据科学学习手札132)Python+Fabric实现远程服务器连接

    本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 日常工作中经常需要通过SSH连接到多台远程 ...

  2. jenkins配置SSH远程服务器连接

    之前用jenkins做了一个自动发布测试,配置任务的Post Steps时,选择的是执行shell命令.如下图: 这是在本192.168.26.233服务器上测试的,此服务器上运行jenkins,to ...

  3. SQL中添加远程服务器连接

    EXEC sp_addlinkedserver 'Testserver','','SQLOLEDB','192.168.1.221' EXEC sp_addlinkedsrvlogin 'Testse ...

  4. phpmyadmin开启远程服务器连接

     1.修改 braries/config.default.php,将 $cfg['AllowArbitraryServer'] 的值由 false 改成 true. 2.有其他需求的也可以自己在这里修 ...

  5. SQL2008和SQL2000可以跨服务器连接查询的测试实例

    测试目的: SQL2008 和 SQL2000 是否可以跨服务器连接查询 -- 测试环境: --A 虚拟机 XP ( IP : .0.0.213 )安装 SQL2000 个人版,并安装 SP4 补丁. ...

  6. win7远程桌面连接总是显示凭证不工作解决方法总结

    使用远程桌面连接可以在网络的另一端控制某台计算机,对计算机进行实时操作,但有时会出现连接失败的情况,比如总是显示您的凭证不工作,下面是我对此问题解决办法的总结. 方法一: 1.在开始菜单内的运行框里输 ...

  7. IntelliJ IDEA自动部署项目至远程服务器与传统部署项目至远程服务器的区别

    每次开发Java项目时,对于所有Java开发人员来说,最枯燥的不是修改代码,而是实时将自己的代码上传至远程服务器,进行测试或者部署,本人最初开发也是这样,通过使用Xshell 5,WinSCP等工具对 ...

  8. 最新JetBrainsPyCharm自动部署Python(Django,tornado等)项目至远程服务器

    每次开发Python项目时,对于所有Python开发人员来说,最枯燥的不是修改代码,而是实时将自己的代码上传至远程服务器,进行测试或者部署,本人最初开发也是这样,通过使用Xshell 5,WinSCP ...

  9. Linux服务器连接不上的几种解决办法

    Linux远程服务器连接不上,或连接超时解决办法:1.测试网络是否通:    ping 远程IP 2.如果能ping通则表示与服务器网络连接是正常,接下来测试端口:telnet 远程ip 端口 3.如 ...

随机推荐

  1. Oracle数据库中,误删除或者修改数据恢复方法

    在我们实际工作中,误删除或者修改Oracle数据库中的数据,怎么办呢?这里给大家分享一种解决办法.假如你误操作的时间不超过30分钟(数据库默认的回滚保持段里的数据时间,可以在pl/sql执行窗口按ct ...

  2. eIQ WSL下工具及环境配置

    1. 配置WSL 参考[https://www.cnblogs.com/hayley111/p/12844337.html] 2. 配置VScode 参考[https://zhuanlan.zhihu ...

  3. 来看下css边框阴影怎么设置?这些方法掌握后工作更轻松

    我们在网页设计中,通常会使用ps工具来达到图片或者边框阴影.立体等效果.但是如果一些基础效果都需要用p图来完成那就显得效率比较低了.其实可以使用CSS来设置边框阴影,下面本篇文章来给大家介绍一下. 在 ...

  4. vue-devtools的安装

    为了能够很好的检查vue代码,安装vue-devtools; 1.下载devtools插件,建议大家去找正规的路径下载(随便在网页上下载的缺文件,我已入坑),正规地址:https://github.c ...

  5. JZOJ2018提高组-测绘

    测绘 题目大意 为了研究农场的气候, \(Betsy\) 帮助农夫 \(John\) 做了 \(N(1 <= N <= 100)\) 次气压测量并按顺序记录了结果 \(M_1...M_N( ...

  6. PCA算法 | 数据集特征数量太多怎么办?用这个算法对它降维打击!

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第27文章,我们一起来聊聊数据处理领域的降维(dimensionality reduction)算法. 我们都知道,图片 ...

  7. call_user_func的使用

    <?php function demo01($a) { echo $a; } call_user_func("demo01", "hello world" ...

  8. web网页动态分享facebook和twitter

    介绍 facebook分享 http://www.facebook.com/sharer.php?t=${text}u=encodeURIComponent('静态html') twitter分享 h ...

  9. Canonical通过Flutter启用Linux桌面应用程序支持

    子标题:Ubuntu团队为所有Linux发行版上的Flutter应用程序制作了一个新的基于GTK +的主机. 此文翻译自:https://medium.com/flutter/announcing-f ...

  10. 基于web的图书管理系统设计与实现

    原文链接:基于web的图书管理系统设计与实现 系统演示链接:点击这里查看演示 01 系统简述     图书管理系统就是利用计算机,结合互联网对图书进行结构化.自动化管理的一种软件,来提高对图书的管理效 ...