zoukankan      html  css  js  c++  java
  • 系统批量运维管理器Fabric之基本语法篇

    一、fab的常用参数

    fab 作为Fabric程序的命令行入口,提供丰富的参数调用,命令格式如下:

    fab [options] <command>[:arg1,arg2=var1,host=foo,host2=’h1;h2’…] …

    下面列举了常用的几个参数,更多参数可使用fab -help查看。

    -l, 显示定义好的任务函数名
    -f, 指定fab入口文件,默认入口文件名为fabfile.py

    -g, 指定网关(中转)设备,比如堡垒机环境,指定填写IP地址即可

    -H, 指定目标主机,多台主机使用”,”号分割

    -P, 以异步并行的方式运行多台主机任务,默认为串行运行

    -R, 指定role(角色),以角色名区分不同业务组设备

    -t, 设置设置连接超时时间(秒)

    -T, 设置远程主机命令执行超时时间(秒)

    -w, 当命令执行失败,发出警告,而非默认终止任务

    接上篇文章的”四、一个小例子”,有时候我们甚至不需要写一行Python代码也可以完成这种远程操作,直接使用命令行的形式,例如:

    fab -p 123456 -H 192.168.80.250,192.168.80.240 — ‘uname -s’

    二、fabfile的编写

    fab命令结合我们编写的fabfile.py(其它文件名必须添加 -f filename 引用)来搭配使用的,部分命令行参数可以通过相应的方法来代替,使之更加灵活,例如”-H 192.168.80.250,192.168.80.240″,我们可以通过env.host来实现,如”env.host=[‘192.168.80.250′,’192.168.80.240’]”。fabfile的主体由多个自定义的任务函数组成,不同任务实现不同的操作逻辑,下面详细介绍。

    1、全局属性设定

    env对象的作用是定义fabfile的全局设定,支持多个属性,包括目标主机、用户、密码、角色等,各属性说明如下:

    env.host, 定义目标主机,可以用IP或主机名表示,以python列表形式定义,例:env.hosts = [“192.168.80.250″,”192.168.80.240”]
    env.exclude_hosts, 排除指定主机,示例:env.exclude_hosts=[“192.168.80.250”]

    env.user, 定义主机名,如:env.user=”root”

    env.port, 定义目标主机端口,默认为22,如:env.port=”22″

    env.password, 定义密码,如:env.password=’123456′

    env.passwords, 与password功能一样,区别在于不同主机不同密码的应用场景,示例:

    env.passwords = {

    ‘root@192.168.1.1:22’: ‘123456’,

    ‘root@192.168.1.2:22’: ‘1234567’,

    ‘root@192.168.1.2:22’: ‘12345678’

    }

    env.gateway, 定义网关(中转、堡垒机)IP,如:env.gateway=”192.168.80.2″

    env.deploy_release_dir, 自定义全局变量,格式:env.+”变量名”,如:env.age,env.name

    env.roledefs, 定义角色分组,示例:将web和db主机组区分,定义如下:

    env.roledefs = {

    “webservers”:[“192.168.80.250″,”192.168.80.240”]

    “dbservers”:[“192.168.80.230”]

    }

    三、常用API

    Fabric 提供了一组简单强大的fabric.api命令集,简单地调用这些API就能完成大部分应用场景需求。Fabric支持常用的方法和说明如下:

    local, 执行本地命令,如:local(‘uname -s’);
    lcd, 切换本地目录,如:lcd(‘/home’);

    cd, 却换远程目录,如:cd(‘/data/logs’);

    run, 执行远程命令,如:run(‘free -m’);

    sudo,sudo方式执行远程命令,如:sudo(‘/etc/init.d/httpd start’);

    put, 上传本地文件到远程主机,如:put(‘/home/abc.txt’,’/tmp/abc1.txt’);

    get, 从远程主机下载文件到本地,如:get(‘/tmp/abc1.txt’,’/home/abc.txt’);

    prompt, 获得用户输入信息,如:prompt(‘input password:’);

    confirm, 获得提示信息确认,如:confirm(“Tests failed. Continue[Y/N]?”);

    reboot, 重启远程主机,如:reboot();

    @task, 函数修饰符,标识函数为fab调用,非标识fab不可见,纯业务逻辑;

    @runs_once, 函数修饰符,标识函数只会执行一次,不受多台主机影响;

  • 相关阅读:
    Windows vm install MAC OS
    DragonBones cpp
    APK .
    cocos2D-X vs2015 lua project 断点调试
    为什么前后端分离了,你比从前更痛苦?
    CSS3中一些鲜为人知的属性
    Web认证_介绍Web开发中几种常用的认证机制
    基于JWT的Token认证机制实现及安全问题
    别了,JavaScript;你好WebAssembly
    css设置全屏背景图,background-size 属性
  • 原文地址:https://www.cnblogs.com/liujunjun/p/13475503.html
Copyright © 2011-2022 走看看