文档章节

ansible api简单应用

eddy_linux
 eddy_linux
发布于 2015/11/23 22:21
字数 716
阅读 192
收藏 1
1.uptime
#!/usr/bin/python
#encoding:utf-8
import ansible.runner
import sys

# construct the ansible runner and execute on all hosts
results = ansible.runner.Runner(
          pattern='client', forks=10,
          module_name='command',
          module_args='/usr/bin/uptime',
          ).run()

if results is None:
   print "No hosts found"
   sys.exit(1)

for (hostname, result) in results['contacted'].items():
        if not 'failed' in result:
                print "UP ***********"
                print "%s >>> %s" % (hostname, result['stdout'])

for (hostname, result) in results['contacted'].items():
        if 'failed' in result:
                print "FAILED *******"
                print "%s >>> %s" % (hostname, result['msg'])

for (hostname, result) in results['dark'].items():
        print "DOWN *********"
        print "%s >>> %s" % (hostname, result)
UP ***********
client1.info.com >>>  21:54:00 up 10 min,  1 user,  load average: 0.02, 0.14, 0.15
UP ***********
puppetmaster.info.com >>>  21:54:00 up 11 min,  1 user,  load average: 0.30, 1.56, 1.41

2.ping
#!/usr/bin/python
#encoding:utf-8
import ansible.runner
import sys

# construct the ansible runner and execute on all hosts
results = ansible.runner.Runner(
          pattern='client', forks=10,
          module_name='ping',
          #module_args='ping',
          ).run()

if results is None:
   print "No hosts found"
   sys.exit(1)

for (hostname, result) in results['contacted'].items():
     if not 'failed' in result:
             print "%s >>>ping:%s" % (hostname, result['ping'])
for (hostname, result) in results['dark'].items():
     if  'failed' in result:
             print "%s >>>ping:%s" % (hostname, result['msg'])
client1.info.com >>>ping:pong
puppetmaster.info.com >>>ping:pong

3.command
#!/usr/bin/python
#encoding:utf-8
import ansible.runner
import sys

command = sys.argv[1]
results = ansible.runner.Runner(
          pattern='client', forks=10,
          module_name='shell',
          module_args=command,
          ).run()

if results is None:
   print "No hosts found"
   sys.exit(1)

for (hostname, result) in results['contacted'].items():
        if not 'failed' in result:
                print "UP ***********"
                print "%s" % (hostname)
                print "%s" %(result['stdout'])
                print ''

for (hostname, result) in results['contacted'].items():
        if 'failed' in result:
                print "FAILED *******"
                print "%s >>> %s" % (hostname, result['msg'])
                print ''
for (hostname, result) in results['dark'].items():
        print "DOWN *********"
        print "%s >>> %s" % (hostname, result)
        print '' 
UP ***********
client1.info.com
2015-11-23-21:56:12

UP ***********
puppetmaster.info.com
2015-11-23-21:56:11


4.install ftp(yum)
#!/usr/bin/python
#encoding:utf-8
import ansible.runner
import sys
def check_ftp():
    check_ftp = ansible.runner.Runner(
              pattern='client', forks=10,
              module_name='shell',
              module_args='rpm -q vsftpd',
              ).run()
    if check_ftp is None:
       print "No hosts found"
       sys.exit(1)
    for (hostname, result) in check_ftp['contacted'].items():
            if not 'failed' in result:
                print "%s" % (hostname)
                print "%s" %(result['stdout'])
    		print ''
                return 1
    for (hostname, result) in check_ftp['contacted'].items():
            if 'failed' in result:
                print "%s >>> %s" % (hostname, result['msg'])
    		print ''
    for (hostname, result) in check_ftp['dark'].items():
        print "%s >>> %s" % (hostname, result)
        print ''
def install():
    install_ftp = ansible.runner.Runner(
              pattern='client', forks=10,
              module_name='yum',
              module_args='name=vsftpd state=latest',
              ).run()
    if check_ftp is None:
       print "No hosts found"
       sys.exit(1)
    for (hostname, result) in install_ftp['contacted'].items():
            if not 'failed' in result:
                print "%s" % (hostname)
                for v in result['results']:
                    print v
                return 1
    for (hostname, result) in install_ftp['contacted'].items():
            if 'failed' in result:
                print "%s >>> %s" % (hostname, result['msg'])
                print ''
    for (hostname, result) in install_ftp['dark'].items():
        print "%s >>> %s" % (hostname, result)
        print ''
def start():
    start_ftp = ansible.runner.Runner(
              pattern='client', forks=10,
              module_name='shell',
              module_args='/etc/init.d/vsftpd start',
              ).run()
    if start_ftp is None:
       print "No hosts found"
       sys.exit(1)
    for (hostname, result) in start_ftp['contacted'].items():
            if not 'failed' in result:
                print "%s" % (hostname)
                print "%s" %(result['stdout'])
                print ''
                return 1
    for (hostname, result) in start_ftp['contacted'].items():
            if 'failed' in result:
                print "%s >>> %s" % (hostname, result['msg'])
                print ''
    for (hostname, result) in start_ftp['dark'].items():
        print "%s >>> %s" % (hostname, result)
        print ''
if __name__ == '__main__':
    check_ftp()
    install()
    start()


client1.info.com
package vsftpd is not installed

client1.info.com
Loaded plugins: product-id, subscription-manager
Updating certificate-based repositories.
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.x86_64 0:2.2.2-11.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package         Arch            Version                Repository         Size
================================================================================
Installing:
 vsftpd          x86_64          2.2.2-11.el6           rhel-iso          151 k

Transaction Summary
================================================================================
Install       1 Package(s)

Total download size: 151 k
Installed size: 331 k
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : vsftpd-2.2.2-11.el6.x86_64                                   1/1 
Installed products updated.
  Verifying  : vsftpd-2.2.2-11.el6.x86_64                                   1/1 

Installed:
  vsftpd.x86_64 0:2.2.2-11.el6                                                  

Complete!

client1.info.com
All packages providing vsftpd are up to date
client1.info.com
Starting vsftpd for vsftpd: [  OK  ]












© 著作权归作者所有

共有 人打赏支持
eddy_linux
粉丝 18
博文 135
码字总数 188789
作品 0
成都
程序员
为什么Ansible在自动化编排成为王者!

Ansible是一个广泛应用的自动化平台,在devops和自动化方面具有特别的优势。 如果有“改进的IT编排和配置管理工具最多”的奖项,红帽的Ansible将成为最具竞争力的竞争者。自2012年由Michael...

云技术实践
05/09
0
0
自动化运维工具—Ansible基本概念

Ansible: ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet,cfengine,chef,func,fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能...

Hito
08/07
0
0
企业级自动化运维工具应用实战-ansible

一:ansible的简介ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。a...

931015
2017/12/09
0
0
python学习-ansible简单使用1

一、介绍 Ansible 一种集成 IT 系统的配置管理、应用部署、执行特定任务的开源平台,是 AnsibleWorks 公司名下的项目,该公司由 Cobbler 及 Func 的作者于 2012 年创建成立。 Ansible 基于 ...

羊草
07/02
0
0
在AWS中部署OpenShift平台

OpenShift是RedHat出品的PAAS平台。OpenShift做为PAAS平台最大的特点是它是完全容器化的PAAS平台,底层封装了Docker和Kubernetes,上层暴露了对开发者友好的接口来完成对应用程序的集成、部署...

无敌西瓜
2017/08/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

阿里云国际版香港CN2测评 月付9美元/30M带宽/1T流量

市面上很多家香港VPS服务商,一直都说阿里云国际版香港CN2线路好,延迟低,速度快,价格便宜流量还多,那么这个香港线路到底怎么样呢?本文从性能、延时、路由、速度方面来全方面测评一下阿里...

flyzy2005
47分钟前
0
0
撤销git commit --amend

it commit -amend之后想撤销 git reset HEAD@{1}

xiaomge
53分钟前
0
0
有意思的TimeUnit

java.util.concurrent.TimeUnit 这个类,相信童鞋们都不陌生。它是一个enum: public enum TimeUnit 好吧,我一直把它当做一个枚举类来用。偶然看到还有别的用法,大吃一斤,原来 TimeUnit 并...

polly
今天
9
0
生成pyc

Python生成pyc文件 pyc文件是py文件编译后生成的字节码文件(byte code)。pyc文件经过python解释器最终会生成机器码运行。所以pyc文件是可以跨平台部署的,类似Java的.class文件。一般py文件改...

Mr_Tea伯奕
今天
0
0
180815-Spring之RestTemplate中级使用篇

Spring之RestTemplate中级使用篇 前面一篇介绍了如何使用RestTemplate发起post和get请求,然而也只能满足一些基本的场景,对于一些特殊的如需要设置请求头,添加认证信息等场景,却没有提及可...

小灰灰Blog
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部