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. keras 从txt加载预测数据

    ImageDataGenerator.flow_from_directory()的用法已经非常多了,优点是简单方便,但数据量很大时,需要组织目录结构和copy数据,很浪费资源和时间 1. 训练时从tx ...

  2. 堆、栈、数据区、bss、代码段

    一个程序的运行是需要内存的,那么我们平常写的程序的内存都是怎么分配的呢 (1)首先我们要知道,内存是真实存在的,内存是一个物理器件.它时由操作系统管理的,我们平常只要使用它就行了,为了方便管理.操作系 ...

  3. 浅谈bfs

    广搜(bfs) 定义 广度优先算法,简称BFS.是一种图形搜索演算法,简单的说,BFS是从根节点开始,沿着树的宽度遍历树的节点,如果发现目标,终止. 与dfs的相似之处与不同 结合深搜理解 相同点:都 ...

  4. 第 11 篇:基于 drf-haystack 的文章搜索接口

    作者:HelloGitHub-追梦人物 在 django 博客教程中,我们使用了 django-haystack 和 Elasticsearch 进行文章内容的搜索.django-haystack 默 ...

  5. 在html中如何兼容使用WebP格式的图片【图片升级到WebP】

    把已有的图片转换为WebP格式 要使用WebP格式,需要将你网站用到的图片都制作一份WebP格式的版本,如果你使用CDN服务商,它们一般都会提供转码到WebP格式的选项.如又拍云: 增加这样的配置后, ...

  6. css样式大全,完整的Css样式大全(整理)

    CSS样式被称为为“层叠样式表”,是一种网页制作做不可或缺的技术,是用于装饰网页,达到设计效果的一种样式语言,下面将整理一下css常用样式: 字体属性:(font) 大小 {font-size: x- ...

  7. 四维DP之方格取数

    题目描述 传送门 设有N*N的方格图(N<=20,我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0.如下图所示(见样例): 某人从图的左上角的A(1,1) 点出发,可以向下行走,也可 ...

  8. List集合的遍历方式

    遍历List集合的三种方法 List list = new ArrayList(); list.add("aaa"); list.add("bbb"); lis ...

  9. JS的数据类型你真的懂了吗

    一.JS数据类型分类 1.基本数据类型 (1)Number 数字 (2)String 字符串 (3)Boolean 布尔值 (4)null 空对象指针 (5)undefined 为定义 (6)symb ...

  10. DVWA学习记录 PartⅠ

    DVWA介绍 DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法 ...