35;炮弹

Shelli的Python项目详细描述


##将远程执行批存储在人类可读的yaml文件中。

如果这是你经常做的事情,你可能会发现自己在使用定制的
脚本或类似fab的东西来完成任务。对于不同的
服务器组,这很容易出错,而且很难通用化。


shelli试图创建一种可读的方法,以智能地定义执行shell命令的计算机组,同时允许对身份验证、文件/脚本传输进行简单配置,还有更多。唯一的配置是需要一个简单的yaml文件。

用法:
-ns1.mydomain.org
-ns2.mydomain.org
选项:
身份验证方法:key
用户名:bind
key:/root/.ssh/id\u rsa\u dns
-fiat:
主机:
-fiat
目标:
-temp-fix:
主机组:
-菲亚特
命令:
-systemctl restart openvpn
-运行脚本:
主机组:
-dns
传输:
-/home/kindlehl/my嫒script1:/tmp/my嫒script1
-/home/kindlehl/my嫒script2:/tmp/my嫒script2
命令:
-/tmp/my嫒script1
-/tmp/my嫒script2
```
覲覲scenario

这些
名称必须可由操作系统的存根解析程序解析,因此不需要使用服务器的fqdn。您必须登录到您的名称服务器并运行一些脚本来更新您的区域。您可能应该自动化更新,但是您决定使用shelli。您还经常遇到连接到云基础设施的openvpn隧道的问题,而且
您认为最好的解决方案是每次出现问题时重新启动openvpn。您可以定义上面的yaml
文件。

这将创建三个主机:ns1.mydomain.org、ns2.mydomain.org和fiat。菲亚特使用密码验证,需要使用根用户登录。

它还创建两个主机组,一个用于菲亚特自身,另一个用于您的DNS服务器。即使您只想在一台主机上运行
命令,您仍然需要定义主机组。

运行脚本将在运行前将两个脚本传输到/tmp。
由于主机组共享身份验证参数,因此它只提示您一次凭据。如果其中一个
名称服务器需要以其他用户身份登录,则会提示您两次。

当Commander在Temp Fix目标上运行时,它将以根用户身份登录到Fiat(同时提示您输入密码),
并重新启动OpenVPN服务。

当Commander运行我的脚本目标,它将登录到dns服务器,将`/home/kindlehl/my\'u script{1,2}`复制到
`ns1.mydomain.org:/tmp/my\'u script{1,2}`和'ns2.mydomain.org:/tmp/my\'u script{1,2}`。然后它将在每个主机上运行`/tmp/my_script1`和`/tmp/my_script2`,
,然后删除这些脚本。

假设您创建了一个新的名称服务器ns3,并且您希望运行与其他服务器相同的命令。只需继续并将
`ns3'添加到主机和dns主机组即可。


当前,命令以串行方式在主机上运行。并行性的选项将在将来出现。

\默认yaml文件的路径是~/.shelli.yml。您可以告诉shelli使用带有-c标志的自定义配置。


yaml文件中有三个顶级散列:

-主机
-主机组
-目标

t在命令执行之前被传输到主机。它在所有命令完成
运行后被删除。
-目标:要将它们应用到的命令、传输和主机组的列表。

这里的值可以是字符串或散列。如果使用字符串,它将创建一个带有默认身份验证参数的
主机。如果给定了散列,则密钥的名称是主机名,而
散列的内容定义了身份验证选项。

默认身份验证是使用端口22上的密码进行根登录。

t;用户密码密钥对密码>;由于明显的原因非常不安全。系统将提示您在没有此选项的情况下输入
凭据。
-端口:<;ssh端口号>;


这里的值是散列。每个哈希的密钥定义
主机组的名称,并且可以在其中包含两个哈希。


这将为整个主机组设置默认的
身份验证。主机组中定义自己身份验证的任何主机都将覆盖此组范围内的默认值。


这里的值是散列。每个散列的键定义目标的名称
,可以包含命令和主机组的列表。可选地,可以定义传输。



rm<;localpath>;:<;remotepath>;在运行命令
之前复制到每个主机。之后将删除它们。


问题
----


请随时提交问题和增强请求。


参与
----


1。**分叉**Github上的回购
2。**将**项目克隆到您自己的计算机上
3。**环境**创建virtualenv并在requirements.txt中安装包
3。**lint**从项目的底部运行"pylint shelli"。确保分数是10/10。
3。**测试**从项目的基础上运行"python-m unittest discover-s test-v"。添加您自己的测试,并确保您的更改不会破坏其他测试。
3.**提交**更改到您自己的分支
4。**把**你的工作推回到你的叉子上
5。提交**拉取请求**,以便我们可以查看您的更改

注意:在发出拉取请求之前,请务必合并"上游"中的最新内容!

主页:https://github.com/kindlehl/shelli
作者:hunter lannon
作者电子邮件:hunter.d.lannon@gmail.com
许可证:gplv3
描述:未知
平台:未知

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

推荐PyPI第三方库


热门话题
java流/下载文件,无需在Spring Boot中保留内存   kotlin/java是否有类似TryParse()的东西?   java Spring引导找不到用户类型的属性ID   java Spring 2到Spring 3的迁移:一个控制器用于多个视图   java包含多个程序包名为“安卓”的库。支持图样可提取'   java spring JPA是否支持自定义值框架?   java转义出基于文本字段的搜索栏   java AAPT:错误:未找到样式属性“安卓:attr/WindowsPlashCreenBackground”   java从文本文件中读取纬度和经度   java哪里可以找到如何使用排序的示例。顺序ignorecase(),其中nullhandling nulls last用于自定义Spring JPA如何提供查询   尝试使用Dialogflow上的Webhook动态给出响应时,java获取Webhook响应错误(206)   如何在java中替换匹配的字符串?   java模拟数学的最大价值。随机的   java Spring RestTemplate GET请求未给出正确响应   春爪哇。lang.IllegalArgumentException   java系统。load()永远不会发生   java剪辑循环不工作   java如何从maven构建中删除staxapi   java ThreadPoolExecutor的排队行为是否可以自定义,以更喜欢创建新线程而不是排队?