用于简化服务器部署的结构命令

burlap的Python项目详细描述


burlap-为简单和快速而设计的配置管理

Pipeline Status

概述

粗麻布是一种configuration management 用于将软件部署到服务器的工具和框架。

它是用python编写的,构建在Fabric的上一个p上,通过ssh远程运行命令。

不同于ChefAnsible,以巨大的复杂性为目标,以大的“Web规模”平台为目标,Bulax以中小规模的平台为目标,并保持其配置简单。

很多代码也受到另一个基于fabric的工具包Fabtools的严重影响。

Python2.7在0.9.54版本中受支持。

安装

通过pip安装软件包:

pip install burlap

快速启动和使用

基本通话格式:

fab <role> <task>

任务是可以执行任意操作的结构命令。

角色是一种特殊类型的任务,它定义了下列任务应应用于的服务器。

角色在名为“roles”的顶级目录中定义,其中每个子目录都表示角色的名称。

此目录中的文件settings.yaml定义此角色的所有设置。

要使用示例角色创建基本burlap框架项目,请运行burlap-admin.py skel myproject

可以有任意数量的任务称为:

fab staging rabbitmq.configure cron.configure apache.configure service.post_deploy

任务被组织在一个叫做背包的班级里。这允许他们共享状态,并有一个更有组织的命名方案。

例如,与apache相关的所有任务都在apache包中,因此要停止,部署apache配置,然后重新启动登台服务器,您需要执行以下操作:

fab staging apache.stop apache.configure apache.restart

然而,它变得更简单。如果将apache添加到services中的roles/staging/settings.yaml列表中,burlap将跟踪更改并在运行时自动部署它们:

fab staging deploy.push

每个包定义如何跟踪其更改,这些更改以清单的形式报告。

burlap在部署之前和之后为每个包检索此清单,并计算差异以确定哪些包有需要部署的未完成更改。

挎包可以定义依赖关系,告诉burlap按特定顺序运行某些任务。

例如,托管在apache上的django项目需要在任何django项目代码之前部署apache配置。

这允许一个角色包含任意数量的背包,其部署可以自动计算。

但是,这个自动部署程序不能预见所有的用例,如果出现异常,您可以重置burlap的最后一个清单,隐式地告诉它,“需要部署的所有东西都已经部署”,但是运行:

fab <role> deploy.fake

实际上,所有burlap任务都支持一个dryrun参数,设置该参数后,将只输出命令,而不会对服务器应用任何实质性更改。它的激活方式如下:

fab <role> some_task:dryrun=1

大多数burlap任务还支持一个verbose参数,该参数将激活每个包定义的其他调试信息。它的激活方式如下:

fab <role> some_task:verbose=1

几乎所有burlap的内置任务都在后台运行bash命令。因此,通过激活dryrun模式并隐藏除生成的bash命令之外的所有多余输出, 可以将burlap调用转换为bash脚本。为此,设置环境变量BURLAP_COMMAND_PREFIX=1,激活dryrun,并将输出捕获到文件。例如

export BURLAP_COMMAND_PREFIX=1; fab staging some_task:dryrun=1 > myscript.sh

运行所有测试:

tox -c tox-full.ini

在特定环境中运行所有测试:

tox -c tox-full.ini -e py37-ubuntu_18_04_64

在特定环境中运行特定测试:

tox -c tox-full.ini -e py37-ubuntu_18_04_64 -- -s burlap/tests/functional_tests/test_md5.py::Md5Tests

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java试图使用JavaFX2实现“插入符号浏览”   三个给定集合中两个集合的java交集?   数组如何在java中从csv文件的元素集中随机选择?   java从变量插入到Jtable,从DB插入   java如何在静态方法的末尾返回变量   java另一个JPA问题   java收藏家。按两列分组不起作用   将java值改为下一个千,而不是最近的千   JavaSpringDataREST:如何通过另一个对象的键进行搜索?   java Spring MVC:HTTP Status 404/SimpleMVC/WEB_INF/HelloPage。jsp   java应用程序光盘在OpenJdk中可用吗?   java在数组中的特定点添加字符   java如何用Mockito模拟方法调用   java从JList获取数据   我们可以在Java中搜索不同IMAP电子邮件帐户中的电子邮件吗?   计算表达式的数学Java算法   未构建Maven的java服务器组件   java调用部署在远程计算机上的会话bean的方法   java XML:迭代地获取每个节点元素的节点值或文本内容