ansible在远程执行本地脚本

原创 2015年11月18日 11:16:11
<span style="font-family: Arial, Helvetica, sans-serif;">#!/usr/bin/python</span>
import ansible.runner
import sys,os

#print len(sys.argv)
if len(sys.argv) != 3:
        print "usage: ansible-script <host-pattern> [scriptname and parms]"
        exit(1)
group_name=sys.argv[1]
script_name=sys.argv[2]

if not os.path.exists(script_name.split()[0]):
        print "%s:no such file" % (script_name.split()[0])
        exit(1)
results = ansible.runner.Runner(
pattern=group_name, forks=5,
module_name='script', module_args=script_name,
).run()

exit_code=0

#print results
#print results['contacted'].items()
if not results['contacted'].items() :
        print "No hosts found"
        sys.exit(1)
print "RESULTS ***********"
for (hostname, result) in results['contacted'].items():
#       print result
#       print "%s >>> %s" % (hostname, result['stdout'])
        if result['rc'] != 0:
                exit_code = result['rc']
                status =  "failed"
                print '\033[1;31;40m' #change frontcolor to red
                print "%s >>> %s \n%s" % (hostname,status,result['stdout'])
        else:
                status =  "success"
                print '\033[1;32;40m' #change frontcolor to green
                print "%s >>> %s \n%s" % (hostname,status,result['stdout'])
print '\033[0m'  #change frontcolor to default
sys.exit(exit_code)


使用方法:比如保存文件为ansible-script,运行命令为

 ansible-script <host-pattern> [scriptname and parms]

exp:  ansible-script testgroup test.sh



ansible命令执行模块使用

ansible命令执行模块使用
  • kellyseeme
  • kellyseeme
  • 2016年01月21日 10:49
  • 18734

在远程服务器上执行本地的shell脚本

1 使用ssh实现ssh user@hostname -C “/bin/bash” < test.sh2 使用expect实现采用的策略就是先在本地通过expect把shell脚本推送到远程服务器上,...
  • wenwenxiong
  • wenwenxiong
  • 2016年06月17日 19:19
  • 6043

ansible在远程机器将程序起在后台

用nohup将程序起在后台,但是有部分程序却不生效,最后结合ansible的async和shell的括号启动程序让程序在后台运行 - name: start agent shell: "( ./...
  • cikenerd
  • cikenerd
  • 2017年01月13日 20:19
  • 1288

ansible在远程执行本地脚本

#!/usr/bin/pythonimport ansible.runner import sys,os #print len(sys.argv) if len(sys.argv) != 3: ...
  • zlucifer
  • zlucifer
  • 2015年11月18日 11:16
  • 2120

ansible在远程执行本地脚本

#!/usr/bin/pythonimport ansible.runner import sys,os #print len(sys.argv) if len(sys.argv) != 3: ...
  • zlucifer
  • zlucifer
  • 2015年11月18日 11:16
  • 2120

linux 通过shell脚本在本地执行远程机器命令

在本机上想通过shell脚本执行远程机器上的命令,其实很简单,只要在ssh 的后面加上 #!/bin/bash ssh root@192.168.1.102 ####从这里开始都是在远...
  • sn3009
  • sn3009
  • 2016年10月10日 17:23
  • 4617

实例学习ansible系列(10)常用模块之script

知识点:使用script模块可以实现到对象节点上执行本机脚本。有点类似copy+shell+删除copy的脚本的这样一个综合的功能。...
  • liumiaocn
  • liumiaocn
  • 2016年07月31日 06:23
  • 5554

ansible-python自动化运维框架实例

ansible功能简介 ansible是基于Python paramiko开发,分布式,无需客户端,轻量级,配置语法使用 YMAL 及 Jinja2模板语言的自动化运维工具,可以用来自动化部署应用、...
  • piaotiejun
  • piaotiejun
  • 2016年03月11日 16:43
  • 8273

05.12 ansible批量自动化管理工具

第一章 ansible软件知识介绍 python语言是运维人员必会的语言 ansible是一个基于python开发的自动化运维工具 其功能实现基于SSH远程连接服务 Ansible可以实现批量系统配置...
  • qunchao_Blog
  • qunchao_Blog
  • 2017年07月15日 20:30
  • 747

关于ansible远程执行的环境变量问题(login shell & nonlogin shelll)

问题 ansible调用playbook远程mvn执行打包时发现执行出错,找不到JAVA_HOME。 我们的exporter JAVA_HOME=/usr/java/jdk1.8.0写在/etc/...
  • u010871982
  • u010871982
  • 2017年11月15日 16:09
  • 523
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ansible在远程执行本地脚本
举报原因:
原因补充:

(最多只允许输入30个字)