Ansible 远程服务器连接 Internet 测试
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 测试的更多相关文章
- (数据科学学习手札132)Python+Fabric实现远程服务器连接
本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 日常工作中经常需要通过SSH连接到多台远程 ...
- jenkins配置SSH远程服务器连接
之前用jenkins做了一个自动发布测试,配置任务的Post Steps时,选择的是执行shell命令.如下图: 这是在本192.168.26.233服务器上测试的,此服务器上运行jenkins,to ...
- SQL中添加远程服务器连接
EXEC sp_addlinkedserver 'Testserver','','SQLOLEDB','192.168.1.221' EXEC sp_addlinkedsrvlogin 'Testse ...
- phpmyadmin开启远程服务器连接
1.修改 braries/config.default.php,将 $cfg['AllowArbitraryServer'] 的值由 false 改成 true. 2.有其他需求的也可以自己在这里修 ...
- SQL2008和SQL2000可以跨服务器连接查询的测试实例
测试目的: SQL2008 和 SQL2000 是否可以跨服务器连接查询 -- 测试环境: --A 虚拟机 XP ( IP : .0.0.213 )安装 SQL2000 个人版,并安装 SP4 补丁. ...
- win7远程桌面连接总是显示凭证不工作解决方法总结
使用远程桌面连接可以在网络的另一端控制某台计算机,对计算机进行实时操作,但有时会出现连接失败的情况,比如总是显示您的凭证不工作,下面是我对此问题解决办法的总结. 方法一: 1.在开始菜单内的运行框里输 ...
- IntelliJ IDEA自动部署项目至远程服务器与传统部署项目至远程服务器的区别
每次开发Java项目时,对于所有Java开发人员来说,最枯燥的不是修改代码,而是实时将自己的代码上传至远程服务器,进行测试或者部署,本人最初开发也是这样,通过使用Xshell 5,WinSCP等工具对 ...
- 最新JetBrainsPyCharm自动部署Python(Django,tornado等)项目至远程服务器
每次开发Python项目时,对于所有Python开发人员来说,最枯燥的不是修改代码,而是实时将自己的代码上传至远程服务器,进行测试或者部署,本人最初开发也是这样,通过使用Xshell 5,WinSCP ...
- Linux服务器连接不上的几种解决办法
Linux远程服务器连接不上,或连接超时解决办法:1.测试网络是否通: ping 远程IP 2.如果能ping通则表示与服务器网络连接是正常,接下来测试端口:telnet 远程ip 端口 3.如 ...
随机推荐
- 编译ts时候src目录的ts分别生成了单独的js文件
{ "compilerOptions": { "target": "es5", "outDir": "bin- ...
- postman无法正常启动
想请教下各位大神,我电脑的postman打开之后就一直转,没法启动是怎么回事?重装了不同版本的也是同样的情况,重启电脑也没用...同样的安装包,在别的电脑上就能正常打开!有什么办法解决吗? 0 20 ...
- 【总结】Array、ArrayList、List
一.Array(数组) 1.申明时必须要指定数组长度. 2.数据类型安全. 申明数组如下: 1 class Program 2 { 3 static void Main(string[] args) ...
- JavaScript基础数组的字面声名法(010)
1.两种方法的对比 数组在JavaScript中,就像大多数的其它语言 一样,是对象.我们可以使用JavaScript内置的数组构造函数Array()来创建数组.就象对象的字面声名法一样,数组也可以采 ...
- 华为云—环境安装(jdk安装,tomcat安装)
前言 在前面咱们讲到华为云的购买以及一些配置,通过上一文即可获得一个可以直接访问使用的云服务器.但是对于不同的人群服务器的使用用途可能不同,对于咱们大部分的java程序员来说,jdk.tomcat.m ...
- 【MyBtis】获取数据插入postgresql后返回的自增id
问题描述 数据库采用的是postgresql,以下面的rule表为例,该表的id设置为自增,那么经常有这样的需求,在执行insert操作后,紧接着需要获取该记录的自增id往中间表中插入数据,或者是再根 ...
- Spring Cloud Alibaba基础教程:Sentinel Dashboard中修改规则同步到Apollo
在之前的两篇教程中我们分别介绍了如何将Sentinel的限流规则存储到Nacos和Apollo中.同时,在文末的思考中,我都指出了这两套整合方案都存在一个不足之处:不论采用什么配置中心,限流规则都只能 ...
- 第三方登陆---GITEE
第三方登陆QQ通行入口 https://www.cnblogs.com/Yangbuyi/p/13194007.html 呼~~~~ 应身边的同学要集成第三方登陆 gitee.github.qq登陆. ...
- 别逃避,是时候来给JVM一记重锤了
今天是猿灯塔“365天原创计划”第2天. 今天讲: 为什么写这个主题呢? 之前看到不少同学在讨论, 今天呢火星哥抽出点时间来帮大家整理一下关于JVM的一些知识点 一.JVM是什 ...
- 状压DP之Bill的挑战
题目 P2167 [SDOI2009]Bill的挑战 Sheng bill不仅有惊人的心算能力,还可以轻松地完成各种统计.在昨天的比赛中,你凭借优秀的程序与他打成了平局,这导致Sheng bill极度 ...