环境很重要、环境很重要、环境很重要

# CentOS 7
$ setenforce 0 # 可以设置配置文件永久关闭
$ systemctl stop iptables.service
$ systemctl stop firewalld.service

一. 准备 Python3 和 Python 虚拟环境

1.1 安装依赖包

$ yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git

1.2 编译安装

$ wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
$ tar xvf Python-3.6.1.tar.xz && cd Python-3.6.1
$ ./configure && make && make install

1.3 建立 Python 虚拟环境

因为 CentOS 6/7 自带的是 Python2,而 Yum 等工具依赖原来的 Python,为了不扰乱原来的环境我们来使用 Python 虚拟环境

$ cd /opt
$ python3 -m venv py3
$ source /opt/py3/bin/activate # 看到下面的提示符代表成功,以后运行 Jumpserver 都要先运行以上 source 命令,以下所有命令均在该虚拟环境中运行
(py3) [root@localhost py3]

二、Fabric 安装和使用

  fabric版本:(十分重要)
  pip install fabric3 or pip3 install fabric3

  常用命令:

  fab -u root -p '123456.' -H ‘10.0.0.1’ -- 'free -m'

  fab -u root -p 123456 -H "192.168.1.108" -- 'uname -a'

  fab -u root -p '123456' -H '10.0.0.1' -- 'hostname anthony-aliyun'

  fab -u root -p '123456' -H '192.168.1.108' -- 'hostname anthony-local'

  常用脚本格式:

  

 #conding:utf-8
from fabric.api import * env.user = "root"
env.hosts = ["192.168.1.104","192.168.1.108"]
env.passwords = {
"root@192.168.1.104:22":'',
"root@192.168.1.108:22":''
} env.roledefs = {
"webserver":["192.168.1.104"],
"dbserver":["192.168.1.108"]
} @task
def show():
run("free -m") @task
@roles("webserver")
def install_httpd():
print("install webserver") @task
@roles("dbserver")
def install_mysql():
print("install mysql")
 #!/usr/bin/python env
# -*- coding: utf-8 -*-
from fabric.api import * env.hosts = ["192.168.1.108"]
env.user = "root"
env.password = ""
env.port = 22 @task
def show():
run("df -lh")
run("free -m")
run("hostname")

  常用参数:

 Usage: fab [options] <command>[:arg1,arg2=val2,host=foo,hosts='h1;h2',...] ....
-l,显示定义好的任务函数名;
-f,指定fab入口文件,默认入口文件名为fabfile.py
-g,指定网关(中转)设备,比如堡垒机环境,填写堡垒机ip即可
-H,指定目标主机,多台主机用“,”号分隔;
-P,以异步并行方式运行多主机任务,默认为串行运行;
-R,指定role,以角色名区分不同业务组设备;
-t,设置设备连接超时时间(秒);
-T,设置远程主机命令执行超时时间(秒);
-w,当命令执行失败,发出告警,而非默认终止任务。

  常用环境变量:

 abort_on_prompts 设置是否运行在交互模式下,例如会提示输入密码之类,默认是false
connection_attempts fabric尝试连接到新服务器的次数,默认1次
cwd 目前的工作目录,一般用来确定cd命令的上下文环境
disable_known_hosts 默认是false,如果是true,则会跳过用户知道的hosts文件
exclude_hosts 指定一个主机列表,在fab执行时,忽略列表中的机器
fabfile 默认值是fabfile.py在fab命令执行时,会自动搜索这个文件执行。
host_string 当fabric连接远程机器执行run、put时,设置的user/host/port等
hosts 一个全局的host列表
keepalive 默认0 设置ssh的keepalive
loacl_user 一个只读的变量,包含了本地的系统用户,同user变量一样,但是user可以修改
parallel 默认false,如果是true则会并行的执行所有的task
pool_size 默认0 在使用parallel执行任务时设置的进程数
password ssh远程连接时使用的密码,也可以是在使用sudo时使用的密码
passwords 一个字典,可以为每一台机器设置一个密码,key是ip,value是密码
path 在使用run/sudo/local执行命令时设置的$PATH环境变量
port 设置主机的端口
roledefs 一个字典,设置主机名到规则组的映射
roles 一个全局的role列表
shell 默认是/bin/bash -1 -c 在执行run命令时,默认的shell环境
skip_bad_hosts 默认false,为ture时,会导致fab跳过无法连接的主机
sudo_prefix 默认值"sudo -S -p '%(sudo_prompt)s' " % env 执行sudo命令时调用的sudo环境
sudo_prompt 默认值"sudo password:"
timeout 默认10 网络连接的超时时间
user ssh使用哪个用户登录远程主机
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/user.info',/data/user.info'')
get 从远程主机下载文件到本地,如get('/home/user.info',/data/user.info'')
prompt 获得用户输入信息,如: prompt('please input user:')
confirm 获得提示信息确认, 如: confirm('Tests failed. Continue[Y/N]?')
reboot 重启远程主机,如: reboot();
@task 函数修饰符,标识的函数为fab可调用的,非标记对fab不可见,纯业务逻辑。
@runs_once, 函数修饰符,标识的函数只会执行一次,不会受多台主机的影响

Fabric quickly的更多相关文章

  1. Azure Service Fabric 开发环境搭建

    微服务体系结构是一种将服务器应用程序构建为一组小型服务的方法,每个服务都按自己的进程运行,并通过 HTTP 和 WebSocket 等协议相互通信.每个微服务都在特定的界定上下文(每服务)中实现特定的 ...

  2. python10作业思路及源码:类Fabric主机管理程序开发(仅供参考)

    类Fabric主机管理程序开发 一,作业要求 1, 运行程序列出主机组或者主机列表(已完成) 2,选择指定主机或主机组(已完成) 3,选择主机或主机组传送文件(上传/下载)(已完成) 4,充分使用多线 ...

  3. MySQL: Fabric 搭建 HA

    搭建好Fabric之后,就可以在它的基础上创建HA Group. Shard Group.HA+Shard Group等.这里来说明一下如何快速的搭建HA环境. Fabric 192.168.2.23 ...

  4. MySQL:Fabric 安装

    MySQL Fabric安装 MySQL Fabric是Oracle提供的用于辅助进行ha\sharding的工具,它的基本架构: 从上面看出,借助于Fabric, 可以搭建 HA 集群.Sharin ...

  5. Fabric远程自动化使用说明

    背景: 关于Fabric的介绍,可以看官网说明.简单来说主要功能就是一个基于Python的服务器批量管理库/工具,Fabric 使用 ssh(通过 paramiko 库)在多个服务器上批量执行任务.上 ...

  6. MySQL Fabric和MyBatis的整合过程中遇到的问题

    这是我昨天在整合MySQL Fabric和MyBatis时遇到的问题,花了大半天才解决的问题,解决的过程中在网上查找了很久,都没有找到解决的方案.现在记下来,希望能够帮助有同样问题的朋友.如果各位朋友 ...

  7. FABRIC单机开发者模式启动

    在开始之前需要导出一个自定义变量,方便后续操作: export FABRIC=/opt/gopath/src/github.com/hyperledger/fabric/devenv 1.在真机上执行 ...

  8. fabric devenv Vagrantfile配置

    Vagrantfile文件只会在第一次执行vagrant up时调用执行,其后如果不明确使用vagrant reload,则不会被强制重新加载. # This is the mount point f ...

  9. python fabric install

    1,install setuptools 2,install pip 3,install pycrpto 4,install paramiko 5,install fabric

随机推荐

  1. 预备篇 I :范畴与函子

    拓扑是研究几何图形或空间在连续改变形状后还能保持不变的一些性质的一个学科.它只考虑物体间的位置关系而不考虑它们的形状和大小. 拓扑是集合上的一种结构. 拓扑英文名是Topology,直译是地志学,最早 ...

  2. apk下载的网址生成一个二维码

    apk提供二维码扫描下载,其实就是把apk所在的地址生成二维码. 下面提供一个在线二维码生成网址,http://cli.im/text/1833744?iID7V

  3. Python学习笔记之类与对象

    这篇文章介绍有关 Python 类中一些常被大家忽略的知识点,帮助大家更全面的掌握 Python 中类的使用技巧 1.与类和对象相关的内置方法 issubclass(class, classinfo) ...

  4. ecshop 后台增加栏目

    ① 后台左侧导航添加菜单 Ecshop后台增加一个左侧列表菜单需要修改三个文件/admin/includes/inc_menu.php /admin/includes/inc_priv.php /la ...

  5. Python中的sorted() 和 list.sort() 的用法总结

    只要是可迭代对象都可以用sorted . sorted(itrearble, cmp=None, key=None, reverse=False) =号后面是默认值 默认是升序排序的, 如果想让结果降 ...

  6. mysql连接错误,error1251解决方式

    解决此问题有两种方法,一种是更新navicat驱动来解决此问题,一种是将mysql用户登录的加密规则修改为mysql_native_password.本文采用第二种方式ALTER USER 'root ...

  7. 【hihocoder 1295】Eular质数筛法

    [题目链接]:http://hihocoder.com/problemset/problem/1295 [题意] [题解] 可以在O(N)的复杂度内求出1..N里面的所有素数; 当然受空间限制,N可能 ...

  8. C#中的stathread标签【待填的坑】

    stathread这种线程是给COM组件使用的线程,如果不适用com对象 如果com对象标记为sta的,则它就是单线程运行的 stathread 组件线程遗留的标签

  9. Spring MVC-表单(Form)标签-复选框(Checkbox)示例(转载实践)

    以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_checkbox.htm 说明:示例基于Spring MVC 4.1.6. 以下示 ...

  10. 安装Maven并搭建Maven私有仓库

    一.说明 Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具.我们在进行Java代码开发的时候,Eclipse+Maven+Jetty是一个十 ...