一个简单的开发环境管理器。

sctl的Python项目详细描述


空间控制

space-control,或{},是一个简单的CLI工具,用于在分布式环境中工作。其目标是允许批处理操作在任意数量的主机上轻松执行,无论这意味着执行命令、下载或上载文件,还是其他任何需要的操作。在

配置文件示例:

directory:/nodes:-host:'some_host'user:'root'connect_kwargs:{      password:password}-host:'mypi'user:'pi'

默认情况下,sctl将查找与当前位置相关的配置文件:.sctl/config.yml。如果找不到文件,它将查找~/.sctl/config.yml。或者,您可以使用-c / --configuration选项指定配置的路径。这将在将来进行扩展,以允许在一个配置中使用多个“配置文件”。在

nodes的每个条目的键是由^{}(奇妙的^{})库指定的参数。您想在本地使用SSH密钥、授权的密钥等进行的任何配置都取决于您。如果您不熟悉(就在10小时前),那么fabric是{a3}和其他一些工具的一个非常棒的包装器,而且它非常容易和干净地使用。看看这两个图书馆。在

这个工具还不完整,离它还很远。在

安装

通过pip安装:

^{pr2}$

或者,对于最新版本和最新版本,请克隆此存储库,然后运行:

python setup.py install

或者使用pip直接从GitHub安装:

python -m pip install git+https://github.com/Lnk2past/space-control.git

示例用法

在每个节点上运行ls,并打印输出(默认操作是exec,可以省略):

sctl ls
sctl exec ls

从每个节点下载.bashrc

sctl download .bashrc

将新的.bashrc上载到每个节点:

sctl upload .bashrc

注释

您可以省略在配置中指定directory;在这些情况下,默认目录通常是您登录的用户的主目录。在

可配置动作

space-control将执行命令和传输文件称为actions。虽然您当然可以直接在CLI上指定操作(如上所示),但也可以在配置文件中提供自定义的操作集。这里的另一个好处是,可配置操作被设计成允许您将多个操作链接在一起(这是您不能直接使用CLI完成的)。例如,您可以上传一个文件,运行一个命令来生成一个新文件,然后通过配置一组操作来下载这个新文件。在

nodes:-host:'somehost'user:'root'actions:pgdump:-action:'exec'command:'dockerexecpostgrespg_dump-fpg_data.txt-tmy_tablemy_db'-action:'exec'command:'dockercppostgres:pg_data.txtpg_data.txt'-action:'download'remote:'pg_data.txt'

这里的自定义操作pgdump将在postgres容器中执行pg_dump,从postgres容器复制文件,然后在本地下载。在

过滤节点

有时您可能希望在配置中的特定节点上运行操作。这可以使用-n/--nodes输入选项来完成。并在该模式上选择一个模式。例如,给定以下配置:

nodes:-host:'foo'user:'root'-host:'bar'user:'root'-host:'foobar'user:'root'

我们只能使用以下方法对foofoobar节点运行操作:

sctl -n foo ls

这里的模式foo将是foo和{}的部分匹配,并且都将包含在要运行的节点集中。在

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

推荐PyPI第三方库


热门话题
将Java中的对象列表序列化为json   在同一Play Framework项目中同时使用Ebean和JPA的java   oop如何在整个Java项目中共享API密钥   java ADT Eclipse SDK故障未找到DDM   扫描程序中变量的递归Java输入值未应用于方法中的变量   java将空格转换为命令行类型的空格   JavaSpring,如何决定客户机应该使用哪个服务?   java致命异常:main(Android标准)   java编译错误是因为类型检查还是三元运算符?   java Sikuli+Webdriver:getting error x.png看起来像一个文件,但在磁盘上找不到。假设是文本   java选择位置。。。。ms sql 2005中需要电气状态   由于OSGi捆绑包依赖性问题,java无法启动RCP应用程序   json java gson fromjson返回非泛型的null   如何将google api访问令牌从java服务器传递到gapi javascript客户端?   java在已排序的LinkedList中添加元素   java ForkJoinPool为什么程序抛出OutOfMemoryError?   java SQUARE无法解析为Processing/Eclipse中的变量   java如何为Sun App Server 8.2设置JNDI