zoukankan      html  css  js  c++  java
  • fabric 批量执行服务器任务和自动化运维管理

    上节我们已经把fabric给配置好了。这节我们通过fabric编写批量执行服务器任务和自动化运维管理

    先介绍下fabric的特点,这个在官方文档里面已经介绍过:

    1 代码可读性强,完全是python语言。
    2 封装了本地、远程操,内置了一些方法。
    3 可以根据需求灵活的定义参数。
    4 角色定义,方便批量管理。

    常用的配置参数:

    env.host           -- 主机ip,当然也可以-H参数指定
    env.password       -- 密码,打好通道的请无视
    env.roledefs       -- 角色分组,比如:{'web': ['x', 'y'], 'db': ['z']}

    fab -l             -- 显示可用的task(命令)
    fab -H             -- 指定host,支持多host逗号分开
    fab -R             -- 指定role,支持多个
    fab -P             -- 并发数,默认是串行
    fab -w             -- warn_only,默认是碰到异常直接abort退出
    fab -f             -- 指定入口文件,fab默认入口文件是:fabfile/fabfile.py


    常用的函数:

    local('pwd')                     -- 执行本地命令
    lcd('/tmp')                      -- 切换本地目录
    cd('/tmp')                       -- 切换远程目录
    run('uname -a')                  -- 执行远程命令,一般会提示叫你输入密码。
    sudo('/etc/init.d/nginx start')  -- 执行远程sudo,注意pty选项
     

    下面是写了一个远程复制文件和本地复制文件的函数。我把localhost既单做远程,还单做本地来操作。

    #encoding=utf-8
    #description:fabric代码测试。

    from fabric.api import run,local,lcd,env,cd

    env.hosts = ['localhost']

    def localcopyfile():
       '''本地文件copy操作'''
      local('pwd')
      local('cp /home/laowang/workspace/info.txt /home/laowang/test')
      print 'local copy file success'


    def remote():
       '''远程文件拷贝操作'''
      run('pwd')
      run('cp /home/laowang/workspace/test.py /home/laowang/test')
      print 'remote copy file success'

    本地localcopyfile方法的执行结果:

    fabric本地执行代码

    远程remote方法的执行结果:

    fabric远程执行代码

    说明:

    1 远程如果你没在代码里面设置好密码 的话,在执行脚本的时候,代码会提示让你输入密码,才能执行,而本地的话,则不会。

    2 这个只是简单的演示,给运维的同学做一个铺垫。其实结合好linux自身的命令就可以做很多相关的批量执行服务器和自动化运维管理的任务了。

  • 相关阅读:
    jvisualm 结合 visualGC 进行jvm监控,并分析垃圾回收
    linux 查看服务器cpu 与内存配置
    arthas 使用总结
    selinux contexts 安全上下文的临时更改
    Android 8.1 Doze模式分析(五) Doze白名单及Debug方式
    Window 任意窗口置顶软件Window TopMost Control
    Android ApkToolPlus一个可视化的跨平台 apk 分析工具
    SVN Please execute the 'Cleanup' command.
    Android 如何在64位安卓系统中使用32位SO库
    Android cmd命令查看apk是32位还是64位?
  • 原文地址:https://www.cnblogs.com/wanpython/p/3095538.html
Copyright © 2011-2022 走看看