Linux集群和自动化维3.7.1 开发环境中的Fabric应用实例

简介:

3.7 Fabric应用实例


3.7.1 开发环境中的Fabric应用实例


笔者公司在开发环境下使用的都是Xen和KVM虚拟机器,有不少数据,因为是内网环境,所以直接用root和SSH密码连接。系统统一为CentOS 6.4 x86_64,内核版本为2.6.32-358.el6.x86_64,Python版本为2.6.6。

实例1,同步Fabric跳板机的/etc/hosts文件,脚本如下:

#!/usr/bin/python

# -*- coding: utf-8 -*-

from fabric.api import *

from fabric.colors import *

from fabric.context_managers import *

#fabric.context_managers是Fabric的上下文管理类,这里需要import是因为下面会用到with

 

env.user = 'root'

env.hosts = ['192.168.1.200','192.168.1.205','192.168.1.206']

env.password = 'bilin101'

 

@task

#限定只有put_hosts_file函数对fab命令可见

def put_hosts_files():

   print yellow("rsync /etc/host File")

   with settings(warn_only=True): #出现异常时继续执行,不终止

       put("/etc/hosts","/etc/hosts")

       print green("rsync file success!")

'''这里用到with是确保即便发生异常,也将尽早执行下面的清理操作,一般来说,Python中的with语句一般多用于执行清理操作(如关闭文件),因为Python中打开文件以后的时间是不确定的,如果有其他程序试图访问打开的文件会导致出现问题。

'''

for host in env.hosts:

    env.host_string = host

    put_hosts_files()

实例2,同步公司内部开发服务器的git代码,现在互联网公司的开发团队应该都比较倾向于采用git作为开发版本管理工具了,此脚本稍微改动下应该也可以应用于线上的机器,脚本如下:

#!/usr/bin/python

# -*- coding: utf-8 -*-

from fabric.api import *

from fabric.colors import *

from fabric.context_managers import *

 

env.user = 'root'

env.hosts = ['192.168.1.200','192.168.1.205','192.168.1.206']

env.password = 'redhat'

 

 

@task

#同上面一样,指定git_update函数只对fab命令可见

def git_update():

    with settings(warn_only=True):

        with cd('/home/project/github'):

            sudo('git stash clear')

            #清理当前git中所有的储藏,以便于我们stashing最新的工作代码

            sudo('git stash')

            '''如果想切换分支,但是又不想提交正在进行的工作,那么就得储藏这些变更。为了往git堆栈推送一个新的储藏,只需要运行git stash命令即可

            '''

            sudo('git pull')

            sudo('git stash apply')

            #完成当前代码pull以后,取回最新的stashing工作代码,这里使用命令git stash apply

            sudo('nginx -s reload')

 

for host in env.hosts:

    env.host_string = host

    git_update()

相关文章
|
3月前
|
安全 Linux iOS开发
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
263 6
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
|
3月前
|
弹性计算 人工智能 前端开发
在阿里云ECS上部署n8n自动化工作流:U2实例实战
本文介绍如何在阿里云ECS的u2i/u2a实例上部署开源工作流自动化平台n8n,利用Docker快速搭建并配置定时任务,实现如每日抓取MuleRun新AI Agent并推送通知等自动化流程。内容涵盖环境准备、安全组设置、实战案例与优化建议,助力高效构建低维护成本的自动化系统。
991 5
|
4月前
|
人工智能 数据可视化 测试技术
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
667 11
|
6月前
|
运维 监控 持续交付
还在为部署开源工具烦恼?自动化部署工具 Websoft9一键部署 300+ 开源应用
在数字化时代,开源工具因免费、灵活、可定制等特性广受欢迎,但其部署过程却常因环境配置复杂、依赖繁琐、耗时长等问题令人头疼。本文介绍了传统部署的三大难点,并提出两种解决方案:传统手动部署与集成化控制台部署。
还在为部署开源工具烦恼?自动化部署工具 Websoft9一键部署 300+ 开源应用
|
6月前
|
运维 监控 应用服务中间件
运维打铁: Ruby 脚本在运维自动化中的应用探索
Ruby 是一种简洁、动态类型的编程语言,适合运维自动化任务。本文介绍了其在服务器配置管理、定时任务执行和日志分析处理中的应用,并提供了代码示例,展示了 Ruby 在运维自动化中的实际价值。
212 2
|
5月前
|
人工智能 IDE 测试技术
Browser-Use在UI自动化测试中的应用
Browser-Use是一款浏览器自动化工具,具备视觉与HTML解析、多标签管理、操作记录与复现、自定义操作、自我纠正及并行执行等功能,助力AI智能体高效完成网页任务。
596 0
|
Java 测试技术 数据安全/隐私保护
软件测试中的自动化策略与工具应用
在软件开发的快速迭代中,自动化测试以其高效、稳定的特点成为了质量保证的重要手段。本文将深入探讨自动化测试的核心概念、常见工具的应用,以及如何设计有效的自动化测试策略,旨在为读者提供一套完整的自动化测试解决方案,帮助团队提升测试效率和软件质量。
|
XML 人工智能 文字识别
Mobile-Agent:通过视觉感知实现自动化手机操作,支持多应用跨平台
Mobile-Agent 是一款基于多模态大语言模型的智能代理,能够通过视觉感知自主完成复杂的移动设备操作任务,支持跨应用操作和纯视觉解决方案。
4776 10
Mobile-Agent:通过视觉感知实现自动化手机操作,支持多应用跨平台
|
11月前
|
Kubernetes 持续交付 开发工具
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
460 2
|
机器学习/深度学习 人工智能 自然语言处理
CogAgent-9B:智谱 AI 开源 GLM-PC 的基座模型,专注于预测和执行 GUI 操作,可应用于自动化交互任务
CogAgent-9B 是智谱AI基于 GLM-4V-9B 训练的专用Agent任务模型,支持高分辨率图像处理和双语交互,能够预测并执行GUI操作,广泛应用于自动化任务。
442 12
CogAgent-9B:智谱 AI 开源 GLM-PC 的基座模型,专注于预测和执行 GUI 操作,可应用于自动化交互任务

热门文章

最新文章